Курс по 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 тест върху съдържанието на тази тема.
Навигация в курса
← Прихващания | Тест — Позиционни прихващания →
💪 Или преминете направо към упражненията в този
раздел.