Курс языка программирования Raku / Регулярные выражения и грамматики / Регулярные выражения / Квантификаторы

Звёздочка, плюс и вопросительный знак

Три знака покрывают самые частые случаи. Каждый из них относится к тому, что стоит прямо перед ним:

  • * — ноль или более раз
  • + — один или более раз
  • ? — ноль или один раз (необязательно)

Знак плюса сопоставляет вереницу из одного или более символов:

say 'aaah' ~~ / a+ /; # 「aaa」

Он взял столько букв a, сколько смог, — все три.

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

say 'colour' ~~ / colou*r /; # 「colour」
say 'color'  ~~ / colou*r /; # 「color」

Вопросительный знак делает кусочек необязательным — он совпадает и когда этот кусочек есть, и когда его нет:

say 'colour' ~~ / colou?r /; # 「colour」
say 'color'  ~~ / colou?r /; # 「color」

Квантификаторы относятся к тому, что стоит непосредственно перед ними, в том числе к классу символов. Например, \d+ соответствует веренице из одной или более цифр — то есть целому числу:

say 'order 66' ~~ / \d+ /; # 「66」

Практика

Пройдите 1 тест по содержанию этой темы.

Навигация по курсу

Квантификаторы   |   Тест — Основные квантификаторы


💪 Или перейдите сразу к упражнениям этого раздела.