Курс Raku / Регулярні вирази та граматики / Регулярні вирази / Захоплення
Позиційні захоплення
Візьміть частину шаблону в круглі дужки ( ), щоб
захопити її. Після успішного збігу кожен захоплений шматок
доступний як $0, $1 і так далі — нумерація від
нуля в порядку відкривання дужок:
if '2025-06' ~~ / (\d+) '-' (\d+) / {
say $0; # 「2025」
say $1; # 「06」
}Перша пара дужок захопила рік у $0, друга — місяць у
$1. Текст між ними, літеральний -,
зіставляється, але не захоплюється.
Кожне захоплення саме є невеликим об’єктом збігу, тож у нього можна
запитати .Str, позицію тощо. У рядку з подвійними лапками
захоплення інтерполюється як текст, з яким воно збіглося:
if 'hello world' ~~ / (\w+) ' ' (\w+) / {
say "$1 $0"; # world hello
}Тут два захоплені слова виводяться у зворотному порядку, що міняє їх місцями.
Захоплення також зберігаються у змінній збігу $/, і
$0 насправді є коротким записом для $/[0].
Працювати можна й безпосередньо через $/:
if '2025-06' ~~ / (\d+) '-' (\d+) / {
say $/[0]; # 「2025」
say $/[1]; # 「06」
say $/.elems; # 2
}$/ є цілим об’єктом збігу, індексування його дістає
позиційні захоплення, а .elems каже, скільки їх.
Практика
Виконайте 1 тест за змістом цієї теми.
Навігація курсом
← Захоплення | Тест — Позиційні захоплення →
💪 Або перейдіть одразу до вправ цього розділу.