Курс по 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 тест върху съдържанието на тази тема.

Навигация в курса

Тест — Позиционни прихващания   |   Тест — Прихващания


💪 Или преминете направо към упражненията в този раздел.