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.