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$';
Комментарии
0Нашли ошибку или хотите дополнить материал?