Cursus Raku / Reguliere expressies en grammatica’s / Reguliere expressies / Strings matchen
Het match-object
Wanneer een regex matcht, geeft de smartmatch een
matchobject terug. Datzelfde object wordt ook automatisch
bewaard in de bijzondere variabele $/, die soms “de
matchvariabele” genoemd wordt.
Het matchobject is veel meer dan een ja-of-nee-antwoord. Als string
is het de tekst die matchte — via de methode .Str of via
het voorvoegsel ~, de operator voor stringcoercie, die
precies hetzelfde doet:
my $m = 'concatenate' ~~ /cat/;
say $m.Str; # cat
say ~$m; # catHet weet ook waar in de string de match gevonden is.
De methode .from geeft de positie waar hij begint, en
.to de positie net na het einde:
my $m = 'room 7 left' ~~ /\d/;
say $m.Str; # 7
say $m.from; # 5
say $m.to; # 6Posities worden vanaf nul geteld, dus het cijfer 7 staat
op index 5.
Wanneer de regex niet matcht, is het resultaat
helemaal geen matchobject — het is de bijzondere waarde
Nil. Nil aan een scalair toekennen laat die
ongedefinieerd:
my $m = 'abc' ~~ /z/;
say $m.defined; # FalseJe kunt dus altijd .defined controleren (of de waarde
gewoon in een booleaanse context gebruiken) voordat je de gematchte
tekst leest.
Praktijk
Maak de 1 quiz over de inhoud van dit onderwerp.
Cursusnavigatie
← Quiz — Smartmatch | Quiz — Matchen →
💪 Of ga direct naar
de oefeningen in deze sectie.