Cursus Raku / Reguliere expressies en grammatica’s / Reguliere expressies / Lookaround-asserties / Exercises / Niet gevolgd door
Oplossing: Niet gevolgd door
Hier is een mogelijke oplossing voor de taak.
Code
say so '50 dollars' ~~ / \d+ >> <!before '%'> /;🦋 Je kunt de broncode vinden in het bestand not-followed.raku.
Uitvoer
TrueOpmerkingen
<!before '%'>is een negatieve lookahead: hij slaagt alleen wanneer de tekst vlak achter het getal geen%is.De
>>is een woordgrens die het einde van het getal markeert, en die doet er hier toe. Zonder die grens zou de gulzige\d+terugkrabbelen: bij50% offzou hij de0opgeven en alleen5matchen — dat niet door%gevolgd wordt — zodat het patroon ten onrechte zou slagen.>>dwingt\d+het hele getal te nemen, zodat de lookahead aan het echte einde getest wordt. Daardoor geeft50 dollarsTrue, terwijl50% offterechtFalsegeeft.