Cursus Raku / Reguliere expressies en grammatica’s / Reguliere expressies / Strings matchen

De smartmatch-operator

De operator die een regex op een string toepast is de smartmatch ~~:

say 'the cat sat' ~~ /cat/; # 「cat」

Een patroon tussen schuine strepen is de gebruikelijkste vorm, maar er zijn er nog twee die hetzelfde betekenen en soms duidelijker zijn:

say 'the cat sat' ~~ m/cat/;  # 「cat」
say 'the cat sat' ~~ rx/cat/; # 「cat」

De vorm m/.../ benadrukt dat je aan het matchen bent, en is handig wanneer je opties aan de match wilt toevoegen (die opties, bijwoorden genoemd, kom je later tegen). De vorm rx/.../ bouwt een regexwaarde zonder hem al te matchen.

Heel vaak geeft het je alleen om de vraag of de string matchte, niet om wat er precies gevonden is. Omdat een geslaagde match een ware waarde is en een mislukte match onwaar, kun je het resultaat rechtstreeks in een booleaanse context gebruiken. De nette manier om een simpele True of False te krijgen is de functie so:

say so 'the cat sat' ~~ /cat/; # True
say so 'the cat sat' ~~ /dog/; # False

Zo wordt een regex een natuurlijke voorwaarde voor if:

if 'the cat sat' ~~ /cat/ {
    say 'found it';   # found it
}

Praktijk

Maak de 1 quiz over de inhoud van dit onderwerp.

Cursusnavigatie

Strings matchen   |   Quiz — Smartmatch


💪 Of ga direct naar de oefeningen in deze sectie.