Курс 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 тест за змістом цієї теми.

Навігація курсом

Що таке граматика   |   Тест — Іменовані регулярні вирази


💪 Або перейдіть одразу до вправ цього розділу.