Оператор 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 экземпляров предыдущей строки |