Статьи

Операторы MySQL REGEXP (Регулярное выражение)

cat_mysql

MySQL предлагает возможность использовать регулярные выражения для выполнения сложного поиска по вашим данным. Регулярное выражение — это инструмент, который обеспечивает краткий и гибкий способ идентификации строк текста на основе пользовательских шаблонов.

В этой статье мы обсудим операторы регулярных выражений MySQL, рассмотрим их использование и синтаксис, а также определим конструкции и специальные символы, которые можно использовать в регулярном выражении MySQL, а также приведем несколько примеров их использования.

Операторы регулярных выражений MySQL

Следующие операторы используются в MySQL для выполнения операций с регулярными выражениями. Они используются в предложении WHERE, аналогичном известному и часто используемому оператору LIKE.

  • REGEXP : оператор сопоставления с образцом для использования регулярных выражений.
  • НЕ REGEXP : отрицание оператора REGEXP.
  • RLIKE : синоним оператора REGEXP.

Синтаксис регулярных выражений MySQL

Основной синтаксис, используемый для операций с регулярными выражениями MySQL:

-- For the REGEXP Operator
SELECT {COLUMN_NAME} FROM {TABLE_NAME} WHERE {COLUMN_NAME} REGEXP '{REGEXP_PATTERN}';

-- For the NOT REGEXP Operator
SELECT {COLUMN_NAME} FROM {TABLE_NAME} WHERE {COLUMN_NAME} NOT REGEXP '{REGEXP_PATTERN}';

-- For the RLIKE Alias Operator
SELECT {COLUMN_NAME} FROM {TABLE_NAME} WHERE {COLUMN_NAME} RLIKE '{REGEXP_PATTERN}';

Чтобы предоставить более подробный, но простой пример операции с регулярными выражениями MySQL, сделайте следующее утверждение. Он извлечет все столбцы каждой записи в таблице PRICE, где PRICELIST_ID соответствует указанному шаблону (начинается с числового диапазона 0-9, встречающегося один или несколько раз, за ​​которым следует ‘_’ (подчеркивание), а затем последовательность символов ‘ДОЛЛАР США’.

SELECT * FROM PRICE WHERE PRICELIST_ID REGEXP '^[0-9]+_USD';

Другой пример операции с регулярным выражением MySQL может быть показан в следующем утверждении. Он извлечет все столбцы каждой записи из таблицы PRICE, где PRICE_ID совпадает с указанным шаблоном (начинается с O, затем следует ‘_’ (подчеркивание), затем числовой диапазон 0-9 встречается один или несколько раз, а затем следует и ‘_’ (подчеркивание), затем заканчивается либо последовательностью символов USD, либо BRA.

SELECT * FROM PRICE WHERE PRICE_ID REGEXP '^O_[0-9]+_[USD|BRA]';

MySQL REGEXP конструкции и специальные символы

Регулярное выражение MySQL может использовать любую из следующих конструкций и специальных символов для создания шаблона для использования с операторами REGEXP. Отображается конструкция или специальный символ, а затем описание каждого и какие операции выполняются в шаблоне для регулярного выражения.

  • ^ : Сопоставить начало строки.
  • $ : Соответствует концу строки.
  • , Соответствует любому символу (включая символы возврата каретки и перевода строки).
  • * : любую последовательность из нуля или болеесимволов.
  • + : любая последовательность одного или более через символы.
  • а ? : Матч либо ноль или один через символы.
  • де | abc : соответствует любой последовательности символов, de или abc .
  • ( abc ) * : сопоставить ноль или более экземпляров последовательности символов abc .
  • {1}, {2,3} : предоставляет более общий способ написания регулярных выражений, которые соответствуют множеству вхождений предыдущего атома (или «части») шаблона. т.е. ? можно записать в виде в {0,1}.
  • [ А-йХ ], [^ а-йХ ] : соответствует любому символу , который является (или нет, если используется ^) либо а , б , гр , д , или X . Символ «-» между двумя другими символами образует диапазон, который сопоставляет все символы от первого символа до второго.
  • [. символы .] : в выражении в скобках (используя «[» и «]») соответствует последовательности символов этого элемента сортировки. то есть шаблон [[.period.]] будет соответствовать ‘.’ (точка) характер.
  • [= character_class =] : в выражении в скобках представляет класс эквивалентности. Соответствует всем символам с одинаковым значением сортировки, включая себя.
  • [: character_class :] : в выражении в скобках представляет класс символов, который соответствует всем символам, принадлежащим этому классу. то есть шаблон [[: alpha:]] будет сопоставляться со строкой, состоящей из всех буквенных символов.
  • [[: <:]], [[:>:]] : Эти маркеры обозначают границы слов и, соответственно, соответствуют началу и концу слов соответственно.

* ПРИМЕЧАНИЕ . MySQL интерпретирует символ «\» (обратную косую черту) как escape-символ. Если вы решите использовать символ «\» в качестве части вашего шаблона в регулярном выражении, ему нужно экранировать с помощью другой обратной косой черты «\\».

Для получения дополнительной документации по оператору регулярных выражений MySQL, пожалуйста, посетите Регулярные выражения в Справочном руководстве MySQL (v5.1 в настоящее время связано).