Регулярные выражения

Регулярные выражения - сильный инструмент для поиска строк, проверки их на соответствие какому-либо шаблону и другой подобной работы.

Особенности создания регулярных выражений:

  • учитывается регистр символов в строке;

  • необходимо экранировать спецсимволы . ^ $ * + ? { } [ ] \ | ( ) указанием перед ними обратного слэша \;

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

Примечание

Обратите внимание, что спецсимвол границы слова \b по-разному отрабатывает в PostgreSQL и ClickHouse:

  • в PostgreSQL \b заменятеся на \y, который срабатывает на начало и конец слова;

  • в PostgreSQL \b также работает после спецсимвола и с юникодом;

  • в ClickHouse юникод не поддерживается, начало слова считается только после пробела, табуляции или начала строки.

Больше спецсимволов для регулярных выражений представлено на сайте для создания выражений https://regex101.com/

Примеры регулярных выражений

Поиск в тексте e-mail или логина AD

(\s|^|\n|\b)(\w|\.?|\-?)+@([A-zА-я0-9][-A-zА-я0-9]+\.)+[A-zА-я]{2,13}((\s|$|\n|\b))

Номерные знаки машин, расширенные и короткие

(А|В|Е|К|М|Н|О|Р|С|Т|У|Х)(\s|\-)?\d{3}(А|В|Е|К|М|Н|О|Р|С|Т|У|Х){2}(\s|\-)?\d{2,3}
(A|B|E|K|M|H|O|P|C|T|Y|X)(\s|\-)?\d{3}(A|B|E|K|M|H|O|P|C|T|Y|X){2}(\s|\-)?\d{2,3}
(A|B|E|K|M|H|O|P|C|T|Y|X){3}(\s|\-)?\d{3}(\s|\-)?\d{2,3} (\s|\n|\b|^\d)

Полис ОСАГО

(^|.*)(РРР|ННН|ХХХ|ТТТ|ААС|ААВ|ААК|ААМ)(-|\s)\d{10}\s

IP адрес

([0-9]{1,3}[\.]){3}[0-9]{1,3}

Найти слово в любом регистре

слово

Номер мобильного телефона

(8|\+7)?(\-|\s)?((9\d{9})|(\(?9\d{2}\)?)(((\-|\s)\d{2,4}){2,3}|(\s|-)\d{7}))

Номер стационарного телефона в формате 8-(код города)-номер_телефона (8-(123)-456-78-90)

(8|\+7)?(\-|\s)?((383\d{7})|(\(?383\)?)(((\-|\s)\d{2,4}){2,3}|(\s|-)\d{7})) – код 383
(8|\+7)?(\-|\s)?((495\d{7})|(\(?495\)?)(((\-|\s)\d{2,4}){2,3}|(\s|-)\d{7})) – код 495
(8|\+7)?(\-|\s)?((499\d{7})|(\(?499\)?)(((\-|\s)\d{2,4}){2,3}|(\s|-)\d{7})) – код 499
(8|\+7)?(\-|\s)?((812\d{7})|(\(?812\)?)(((\-|\s)\d{2,4}){2,3}|(\s|-)\d{7})) – код 812