Регулярные выражения (regex, regexp) представляют собой мощный способ выполнения сложного поиска.
В MySQL используется расширенная версия предложенной Генри Спенсером (Henry Spencer) реализации регулярных выражений, которая ориентирована на соответствие POSIX 1003.2.
В данном разделе приведен упрощенный справочник; подробности здесь опущены. Чтобы получить более точную информацию, обращайтесь к странице руководства Генри Спенсера regex(7), которая включена в дистрибутив исходного кода. See section C Благодарности.
Регулярное выражение описывает набор строк. Простейшее регулярное выражение не включает в себя специальных символов. Например, регулярное выражение hello означает совпадение с hello и ничего больше.
В нетривиальных регулярных выражениях используются определенные специальные конструкции - это обеспечивает возможность получать соответствие для более чем одной строки. Например, регулярное выражение hello|word соответствует как hello, так и word.
Можно привести и более сложный пример: регулярному выражению B[an]*s
соответствует любая из строк: Bananas, Baaaaas, Bs, а также любая другая строка, начинающаяся с B, заканчивающаяся на s и содержащая любое количество символов a или n между ними.
В регулярном выражении могут использоваться любые специальные символы/структуры из числа приведенных ниже:
^
Соответствие началу строки.
mysql> SELECT "fo\nfo" REGEXP "^fo$"; -> 0 mysql> SELECT "fofo" REGEXP "^fo"; -> 1
$
Соответствие концу строки.
mysql> SELECT "fo\no" REGEXP "^fo\no$"; -> 1 mysql> SELECT "fo\no" REGEXP "^fo$"; -> 0
.
Соответствие любому символу (включая перевод строки).
mysql> SELECT "fofo" REGEXP "^f.*"; -> 1 mysql> SELECT "fo\nfo" REGEXP "^f.*"; -> 1
a*
Соответствие любой последовательности из нуля или более символов "a".
mysql> SELECT "Ban" REGEXP "^Ba*n"; -> 1 mysql> SELECT "Baaan" REGEXP "^Ba*n"; -> 1 mysql> SELECT "Bn" REGEXP "^Ba*n"; -> 1