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

Как проверять сообщения пользователя регулярными выражениями в блоке «Условие»: основы синтаксиса, специальные символы и пример реализации.

Обновлено

Регулярные выражения — наборы символов, применяемых для поиска текстовых строк, соответствующих требуемым условиям. В рамках работы чат-ботов BotHunter они позволяют проверять полученное от пользователя сообщение на соответствие выражению.

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

Синтаксис регулярных выражений

Большинство символов в регулярных выражениях представляют сами себя, за исключением группы специальных символов «] \ / ^ $ . | ?+ ( ) { }». Если эти символы нужно представить в качестве символов текста, их следует экранировать обратной косой чертой «\».

Если эти спецсимволы встречаются без обратной косой черты, значит у них особенные значения в регулярных выражениях:

  • «^» — каретка, циркумфлекс или просто галочка. Начало строки;

  • «$» — знак доллара. Конец строки;

  • «.» — точка. Любой символ;

  • «» – знак умножения, звездочка. Любое количество предыдущих символов;

  • «+» – плюс. 1 или более предыдущих символов;

  • «?» – вопросительный знак. 0 или 1 предыдущих символов;

  • «( )» – круглые скобки. Группировка конструкций;

  • «|» – вертикальная линия. Оператор «ИЛИ»;

  • «]» – квадратные скобки. Любой из перечисленных символов, диапазон. Если первый символ в этой конструкции – «^», то массив работает наоборот – проверяемый символ не должен совпадать с тем, что перечислено в скобках;

  • «{ }» – фигурные скобки. Повторение символа несколько раз;

  • «\» – обратный слеш. Экранирование служебных символов.

Также существуют специальные метасимволы, ими можно заменить некоторые готовые конструкции:

  • \b — обозначает не символ, а границу между символами;

  • \d — цифровой символ;

  • \D — нецифровой символ;

  • \s — пробельный символ;

  • \S — непробельный символ;

  • \w — буквенный или цифровой символ или знак подчеркивания;

  • \W — любой символ, кроме буквенного или цифрового символа или знака подчеркивания.

Пример реализации

Допустим нам нужно создать регулярное выражение, которое бы проверяло написание даты в формате 26 декабря, 15:00


В таком случае наше регулярное выражение выглядело бы так:

\d{1,2} [а-я]+, \d{1,2}:\d{2}

Где:
\d = цифровой символ
\d{1,2} = 1 или 2 цифровых символа
[а-я]+ = одна и более букв на кириллице
, : = запятая и двоеточие
пробел = пробел