Cursus Raku / Reguliere expressies en grammatica’s / Reguliere expressies / Captures
Benoemde captures
Genummerde captures zijn handig, maar wanneer een patroon groeit zijn
namen duidelijker dan nummers. Om een capture een naam te geven, schrijf
je $<naam>=( … ):
if 'Anna:30' ~~ / $<name>=(\w+) ':' $<age>=(\d+) / {
say $<name>; # 「Anna」
say $<age>; # 「30」
}De gecapturde stukken zijn nu op naam bereikbaar via
$<name> en $<age> in plaats van
$0 en $1. Dit is hetzelfde als
$/<name> schrijven, omdat de namen binnen de
matchvariabele $/ leven.
Benoemde captures laten een patroon bijna als een beschrijving van de gegevens lezen:
if 'x=5' ~~ / $<key>=(\w+) '=' $<value>=(\w+) / {
say "key is $<key>, value is $<value>"; # key is x, value is 5
}Net als bij positionele captures is elke benoemde capture een
matchobject, dus $<age>.Str geeft de kale tekst en
$<age>.from geeft de positie ervan.
Praktijk
Maak de 1 quiz over de inhoud van dit onderwerp.
Cursusnavigatie
← Quiz — Positionele captures | Quiz — Captures →
💪 Of ga direct naar
de oefeningen in deze sectie.