MySQL: Регулярные выражения в MySQL
REGEXP (regular expression) в MySQL представляет собой мощный инструмент для работы с текстом, который позволяет осуществлять поиск и сопоставление подстрок с использованием шаблонов. Он использует регулярные выражения для определения шаблонов, которые будут использоваться при поиске и сопоставлении текста.
Метасимвол | Описание |
---|---|
^ | соответствует позиции в начале искомой строки |
$ | соответствует позиции в конце искомой строки |
. | соответствует любому одиночному символу |
[…] | соответствует любому символу, указанному внутри квадратных скобок |
[^…] | соответствует любому символу, не указанному внутри квадратных скобок |
p1|p2 | соответствует любому из шаблонов p1 или p2 |
* | соответствует предшествующему символу ноль или более раз |
+ | соответствует предшествующему символу один или более раз |
{n} | соответствует n экземплярам предшествующего символа |
{m,n} | соответствует от m до n экземпляров предшествующего символа |
# Поиск строк, содержащих только латинские буквы: SELECT * FROM table WHERE column REGEXP '[a-zA-Z]'; # Поиск строк, содержащих только кириллические буквы: SELECT * FROM table WHERE column REGEXP '[а-яА-Я]'; # Поиск строк, содержащих только цифры: SELECT * FROM table WHERE column REGEXP '[0-9]'; # Поиск строк, содержащих только буквы и цифры: SELECT * FROM table WHERE column REGEXP '[a-zA-Z0-9]'; # Поиск строк, начинающихся с буквы или цифры: SELECT * FROM table WHERE column REGEXP '^[a-zA-Z0-9]'; # Поиск строк, содержащих определенное слово: SELECT * FROM table WHERE column REGEXP 'word'; # Поиск строк, содержащих определенное слово из набора: SELECT * FROM table WHERE column REGEXP 'word|altword'; # Поиск строк, содержащих определенный набор символов: SELECT * FROM table WHERE column REGEXP '[abc]'; # Поиск строк, содержащих любые символы, кроме определенного набора: SELECT * FROM table WHERE column REGEXP '[^abc]'; # Поиск строк, содержащих только пробелы: SELECT * FROM table WHERE column REGEXP '^[[:space:]]*$'; # Поиск строк, содержащих email-адрес: SELECT * FROM table WHERE column REGEXP '^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+.[a-zA-Z]{2,}$'; # Поиск строк, содержащих номер телефона: SELECT * FROM table WHERE column REGEXP '^+?[0-9]{1,3}\s??\d3?\d3?[-.\s]?\d{3}[-.\s]?\d{4}$'; # Поиск строк, начинающихся с определенной подстроки: SELECT * FROM table WHERE column REGEXP '^substring'; # Поиск строк, заканчивающихся определенной подстрокой: SELECT * FROM table WHERE column REGEXP 'substring$'; # Поиск строк, содержащих только заглавные буквы: SELECT * FROM table WHERE column REGEXP '^[A-Z]+$'; # Поиск строк, содержащих только строчные буквы: SELECT * FROM table WHERE column REGEXP '^[a-z]+$'; # Поиск строк, содержащих только определенное количество символов: SELECT * FROM table WHERE column REGEXP '^.{5}$'; -- ищет строки, содержащие ровно 5 символов # Поиск строк, содержащих только определенное количество и более символов: SELECT * FROM table WHERE column REGEXP '^.{5,}$'; -- ищет строки, содержащие 5 символов или более # Поиск строк, содержащих только определенное количество и не более символов: SELECT * FROM table WHERE column REGEXP '^.{1,5}$'; -- ищет строки, содержащие от 1 до 5 символов # Поиск строк, содержащих только определенный набор символов в определенной последовательности: SELECT * FROM table WHERE column REGEXP '^abc.*def$'; -- ищет строки, начинающиеся с 'abc' и заканчивающиеся на 'def' # Поиск строк, содержащих любые символы в определенном диапазоне Unicode: SELECT * FROM table WHERE column REGEXP '[\u0400-\u04FF]'; -- ищет строки, содержащие кириллические символы # Поиск строк, содержащих только определенный набор слов: SELECT * FROM table WHERE column REGEXP '^(word1|word2|word3)$'; # Поиск строк, содержащих только определенный набор символов, повторяющихся несколько раз: SELECT * FROM table WHERE column REGEXP '^(abc){3}$'; -- ищет строки, содержащие три повторения набора символов 'abc' # Поиск строк, содержащих определенную последовательность символов в любом месте строки: SELECT * FROM table WHERE column REGEXP '.substring.'; # Поиск строк, содержащих определенную последовательность символов в начале строки: SELECT * FROM table WHERE column REGEXP '^substring.*'; # Поиск строк, содержащих определенную последовательность символов в конце строки: SELECT * FROM table WHERE column REGEXP '.*substring$';
Комментарии