Регулярные выражения¶
Регулярные выражения - сильный инструмент для поиска строк, проверки их на соответствие какому-либо шаблону и другой подобной работы.
Особенности создания регулярных выражений:
учитывается регистр символов в строке;
необходимо экранировать спецсимволы . ^ $ * + ? { } [ ] \ | ( ) указанием перед ними обратного слэша \;
При создании политики Поиск по словарю можно воспользоваться Конструктором регулярных выражений, чтобы создать и проверить своё регулярное выражение.
Примечание
Обратите внимание, что спецсимвол границы слова \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