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

Регулярные выражения — наборы символов, применяемых для поиска текстовых строк, соответствующих требуемым условиям. В рамках работы чат-ботов 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 цифровых символа [а-я]+ = одна и более букв на латинице , : = запятая и двоеточие пробел = пробел

Last updated