Cursus Raku / Reguliere expressies en grammatica’s / Reguliere expressies / Captures

Positionele captures

Zet een deel van het patroon tussen ronde haken ( ) om het te capturen. Na een geslaagde match is elk gecapturd stuk beschikbaar als $0, $1, enzovoort, genummerd vanaf nul in de volgorde waarin de haken openen:

if '2025-06' ~~ / (\d+) '-' (\d+) / {
    say $0; # 「2025」
    say $1; # 「06」
}

Het eerste haakjespaar captureerde het jaar in $0, het tweede captureerde de maand in $1. De tekst ertussen — de letterlijke - — wordt gematcht maar niet gecapturd.

Elke capture is zelf een klein matchobject, dus je kunt hem om zijn .Str, zijn positie enzovoort vragen. In een string met dubbele aanhalingstekens interpoleert een capture als zijn gematchte tekst:

if 'hello world' ~~ / (\w+) ' ' (\w+) / {
    say "$1 $0"; # world hello
}

Hier worden de twee gecapturde woorden in omgekeerde volgorde afgedrukt, wat ze verwisselt.

De captures worden ook in de matchvariabele $/ bewaard, en $0 is eigenlijk een korte manier om $/[0] te schrijven. Je kunt rechtstreeks via $/ werken:

if '2025-06' ~~ / (\d+) '-' (\d+) / {
    say $/[0];    # 「2025」
    say $/[1];    # 「06」
    say $/.elems; # 2
}

$/ is het hele matchobject, het indexeren bereikt de positionele captures, en .elems vertelt je hoeveel er zijn.

Praktijk

Maak de 1 quiz over de inhoud van dit onderwerp.

Cursusnavigatie

Captures   |   Quiz — Positionele captures


💪 Of ga direct naar de oefeningen in deze sectie.