Найти строки, содержащие регулярное выражение [:цифра:]

#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, например, имеет стандартный язык, на котором поставщики баз данных добавляют или изменяют что-либо,