Перейти к основному содержимому

Оператор REGEXP

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

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

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

... WHERE table_field REGEXP 'pattern';

Где pattern — это регулярное выражение, задающее шаблон поиска.

Нюансы

Регистронезависимость

По умолчанию регулярные выражения в MySQL не чувствительны к регистру. Например, выражение REGEXP 'abc' найдёт строку и abc, и Abc, и ABC.

Специальные символы

Некоторые символы имеют особое значение в регулярных выражениях и требуют экранирования например, ., *, +, ?, [, ], (, ), {, }, |, \.

Для экранирования таких символов используйте двойной обратный слеш — \\.

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

Символы и структурыЧему соответствует
*0 или более экземпляров предшествующей строки
+1 или более экземпляров предшествующих строк
.Любой одиночный символ
?0 или 1 экземпляр предшествующей строки
^Соответствует началу строки
$Соответствует окончанию строки
[abc]Любой символ, указанный в квадратных скобках
[^abc]Любой символ, не указанный в квадратных скобках
[A-Z], [А-Я]Соответствует любой заглавной букве латинского и кириллического алфавита соответственно
[a-z], [а-я]Соответствует любой строчной букве латинского и кириллического алфавита соответственно
[0-9]Соответствует любой цифре
p1|p2|p3Соответствует любому из паттернов p1 или p2 или p3
{n}n экземпляров предыдущей строки
{m,n}от m до n экземпляров предыдущей строки