Курс языка программирования Raku / Регулярные выражения и грамматики / Грамматики / Что такое грамматика
Именованные регулярные выражения
До сих пор вы писали шаблоны прямо внутри / … /. Но
шаблону можно дать имя и использовать его повторно —
совсем как подпрограмму. Объявляют его через my regex (или
my token, с которым вы как следует познакомитесь чуть
позже):
my regex number { \d+ }Чтобы воспользоваться именованным регулярным выражением внутри
другого шаблона, напишите его имя в угловых скобках —
<number>:
my regex number { \d+ }
if '42 cats' ~~ / <number> / {
say $<number>; # 「42」
}Вызов <number> и сопоставляет шаблон,
и захватывает его под этим именем, поэтому совпавший
текст доступен как $<number> — именованный захват
достаётся вам даром.
Именованное регулярное выражение можно использовать в одном шаблоне несколько раз. Когда оно встречается больше одного раза, захваты становятся списком, доступным по индексу:
my regex num { \d+ }
if '3-4' ~~ / <num> '-' <num> / {
say $<num>[0]; # 「3」
say $<num>[1]; # 「4」
}Именованные регулярные выражения сохраняют шаблоны удобочитаемыми и позволяют собирать большие шаблоны из меньших, хорошо названных частей. Ровно этим и занимается грамматика, только в большем масштабе.
Практика
Пройдите 1 тест по содержанию этой темы.
Навигация по курсу
← Что такое грамматика | Тест — Именованные регулярные выражения →
💪 Или перейдите сразу к упражнениям этого
раздела.