#mysql
#mysql
Вопрос:
Я хочу создать регулярное выражение, чтобы найти все строки, содержащие число в квадратных скобках [1]
Я использовал этот запрос:
SELECT * FROM `Landscapes` WHERE `Description` REGEXP "[(.*?)]"
Но он возвращает все строки.
Также
SELECT * FROM `Landscapes` WHERE `Description` REGEXP "\[(.*?)\]"
Говорит, что это недопустимое регулярное выражение.
Я хочу начать с цели поиска регулярного выражения, затем перейти к цели его удаления.
P.S: Регулярное выражение работает на C #. Итак, регулярное выражение правильное.
Ответ №1:
.*?
Часть в \[(.*?)\]
должна соответствовать всему в каждом механизме регулярных выражений. поэтому логично, что вы получаете все записи в MySQL.
Скорее всего, вы ищете шаблон регулярного выражения \[[0-9] \]
Запрос
SELECT * FROM `Landscapes` WHERE `Description` REGEXP "\[[0-9] \]"
Результат
| Description |
| ---------------- |
| lurom ipsum [1] |
| lurom ipsum [11] |
| lurom ipsum [2] |
| lurom ipsum [22] |
смотрите демонстрацию
Комментарии:
1. Это сработало. Достаточно глупо. Почему это должно работать в одном движке, а не в другом? Я думал, что регулярное выражение — это унифицированный язык.
2. «Почему это должно работать в одном движке, а не в другом? Я думал, что регулярное выражение — это унифицированный язык. » @AhmadSattout Не уверен, соответствует ли регулярное выражение стандарту ANSI / ISO или RFC, если на то пошло, но SQL, например, имеет стандартный язык, на котором поставщики баз данных добавляют или изменяют что-либо,