Курс Raku / Регулярні вирази та граматики / Регулярні вирази / Захоплення

Іменовані захоплення

Пронумеровані захоплення зручні, але, коли шаблон розростається, імена зрозуміліші за числа. Щоб дати захопленню ім’я, запишіть $<ім'я>=( … ):

if 'Anna:30' ~~ / $<name>=(\w+) ':' $<age>=(\d+) / {
    say $<name>; # 「Anna」
    say $<age>;  # 「30」
}

До захоплених шматків тепер дістаються за іменем через $<name> та $<age> замість $0 і $1. Це те саме, що записати $/<name>, бо імена живуть усередині змінної збігу $/.

Іменовані захоплення роблять шаблон схожим на опис самих даних:

if 'x=5' ~~ / $<key>=(\w+) '=' $<value>=(\w+) / {
    say "key is $<key>, value is $<value>"; # key is x, value is 5
}

Як і позиційне, кожне іменоване захоплення є об’єктом збігу, тож $<age>.Str дає звичайний текст, а $<age>.from — його позицію.

Практика

Виконайте 1 тест за змістом цієї теми.

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

Тест — Позиційні захоплення   |   Тест — Захоплення


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