Cursus Raku / Reguliere expressies en grammatica’s / Reguliere expressies / Lookaround-asserties
Lookahead
Een lookahead controleert wat er onmiddellijk na de huidige positie komt. Hij wordt tussen punthaken geschreven:
<?before …>— slaagt als de tekst erna matcht (positieve lookahead)<!before …>— slaagt als de tekst erna niet matcht (negatieve lookahead)
De assertion zelf matcht geen tekens; hij test alleen de positie.
Match bijvoorbeeld een getal alleen wanneer het door het woord
dollars gevolgd wordt:
say '100 dollars' ~~ / \d+ <?before ' dollars'> /; # 「100」De match is alleen 100 — de tekst dollars
werd gecontroleerd maar niet meegenomen.
Omdat de lookahead alleen beweert wat erna komt, matcht hetzelfde getal wel of niet, afhankelijk van de valuta erachter:
say so '100 euro' ~~ / \d+ <?before ' euro'> /; # True
say so '100 dollars' ~~ / \d+ <?before ' euro'> /; # FalseDe cijfers zijn in beide strings identiek, maar de assertion
aanvaardt 100 alleen wanneer er euro op
volgt.
De negatieve vorm is nuttig voor “… maar niet wanneer erop volgt …”.
Match cat alleen wanneer er geen cijfer op
volgt:
say so 'cats' ~~ / cat <!before \d> /; # True
say so 'cat5' ~~ / cat <!before \d> /; # FalseIn cat5 ziet de lookahead vlak achter cat
een cijfer, dus mislukt de negatieve assertion en mislukt de hele
match.
Praktijk
Maak de 1 quiz over de inhoud van dit onderwerp.
Cursusnavigatie
← Lookaround-asserties | Quiz — Lookahead →
💪 Of ga direct naar de oefeningen in deze
sectie.