Курс 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 тест за змістом цієї теми.
Навігація курсом
← Що таке граматика | Тест — Іменовані регулярні вирази →
💪 Або перейдіть одразу до вправ цього
розділу.