Найти в Дзене
Митряев Владимир

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

Регуля́рные выраже́ния (англ. regular expressions) — формальный язык, используемый в компьютерных программах, работающих с текстом, для поиска и осуществления манипуляций с подстроками в тексте, основанный на использовании метасимволов (символов-джокеров, англ. wildcard characters). Для поиска используется строка-образец (англ. pattern, по-русски её часто называют «шаблоном»). Регулярные выражения в конструкторе чат-ботов Leadtex (и им подобных) используются в блоках с пунктом Валидация. Валидация - проверка введенных данных пользователя на соответствии указанному формату. Если валидация считается не пройденной, клиенту возвращается сообщение об ошибке с просьбой повторить введение данных в корректном формате. Валидация активируется когда нет совпадений по пунктам меню. Валидация есть в блоках позволяющих получать чат-боту сообщение от пользователя. Регулярные выражения позволяют найти в строке последовательности, соответствующие шаблону. Например шаблон "Вася(.*)Пупкин" позволит найт
Оглавление

Регуля́рные выраже́ния (англ. regular expressions) — формальный язык, используемый в компьютерных программах, работающих с текстом, для поиска и осуществления манипуляций с подстроками в тексте, основанный на использовании метасимволов (символов-джокеров, англ. wildcard characters). Для поиска используется строка-образец (англ. pattern, по-русски её часто называют «шаблоном»).

Регулярные выражения в конструкторе чат-ботов Leadtex (и им подобных) используются в блоках с пунктом Валидация. Валидация - проверка введенных данных пользователя на соответствии указанному формату. Если валидация считается не пройденной, клиенту возвращается сообщение об ошибке с просьбой повторить введение данных в корректном формате. Валидация активируется когда нет совпадений по пунктам меню.

Валидация есть в блоках позволяющих получать чат-боту сообщение от пользователя. Регулярные выражения позволяют найти в строке последовательности, соответствующие шаблону. Например шаблон "Вася(.*)Пупкин" позволит найти последовательность когда между словами Вася и Пупкин будет любое количество любых символов. Если надо найти шесть цифр, то пишем "[0-9]{6}" (если, например, от шести до восьми цифр, тогда "[0-9]{6,8}"). Здесь разделены такие вещи как указатель набора символов и указатель необходимого количества:

<набор символов><квантификатор><жадность>

Набор символов

[<символы>] - класс символов ("любое из"). Например [abcdef]

[^<символы>] - негативный класс символов ("любое кроме")

- - тире обозначение последовательности в классе символов ("[0-9]" — цифры)

\d - эквивалентно [0-9] (Только цифры)

\D - эквивалентно [^0-9] (Кроме цифр)

\w - эквивалентно [a-z0-9] (Буквы и цифры)

\W - эквивалентно [^a-z0-9] (Кроме букв и цифр)

\s - эквивалентно [ ] (пробел, табуляция, перевод строки)

\S - эквивалентно [^ ] (Кроме пробельных символов)

Не пользуйтесь классом символов для обозначения всего лишь одного (вместо "[h]+" вполне сойдет "h+"). Не пишите в классе символов точку — это ведь любой символ, тогда другие символы в классе будут просто лишними (а в негативном классе получится отрицание всех символов).

Спецсимволы

\ - экранирование спецсимвола

\\ - обратный слеш

| - Метасимвол выбора (или или)

^ - Метасимвол начала строки

$ - Метасимвол конца строки

\n - Символ перевода строки (шестнадцатеричный код 0x0A)

. - Точка. Любой символ.

Квантификатор

Указатель количества символов называется "квантификатор".

Квантификатором можно указать как конкретное значение, так и пределы. Если число заданных подпадает под пределы квантификатора, фрагмент выражения считается совпавшим с разбираемой строкой. Синтаксис:

{
<количество>}
либо
{
<минимум>, <максимум>}


Итак, квантификатор может иметь как конкретное значение - либо одно фиксированное ("{5}"), либо как числовой промежуток ("{5,9}"), так и абстрактное "любое число, в т.ч. 0" ("*"), "любое натуральное число" - от 1 до бесконечности ("+": "photo[0-9]+.png"), "либо 0, либо 1" ("?"). По умолчанию квантификатор для данного набора символов равен единице ("photo[0-9].jpg").
Если нужно указать только необходимый минимум, а максимума нет, просто ставим запятую и не пишем второе число: "{5,}" (минимум 5). Для наиболее часто употребляемых квантификаторов есть специальные обозначения:

* - "звёздочка" или знак умножения обозначает {0,} (хоть сколько)

+ - плюс обозначает {1,} (минимум один)

? - вопросительный знак обозначает {0,1} (нет или один)

На практике такие символы используются чаще, чем фигурные скобки.

Якоря

^ - привязка к началу строки

$ - привязка к концу строки

Эти символы должны стоять соответственно в самом начале и в самом конце строки.

Жадность

Вопросительный знак выступает еще и как минимизатор квантификатора:
.*?