Cursus Raku / Reguliere expressies en grammatica’s / Reguliere expressies / Lookaround-asserties / Exercises / Tussen haakjes
Oplossing: Tussen haakjes
Hier is een mogelijke oplossing voor de taak.
Code
say '$50' ~~ / <?after '$'> \d+ >> <!before '.'> /;🦋 Je kunt de broncode vinden in het bestand whole-dollar.raku.
Uitvoer
「50」Opmerkingen
<?after '$'>is een positieve lookbehind — hij eist een$vlak vóór het getal — en<!before '.'>is een negatieve lookahead — hij eist dat er geen.op volgt. Noch de$, noch de omgeving wordt onderdeel van de match, dus is het resultaat alleen50.De
>>is een woordgrens die het einde van het getal markeert. Zonder die grens zou de gulzige\d+kunnen terugkrabbelen: bij$39.99zou hij de9opgeven en3matchen (dat niet door.gevolgd wordt).>>dwingt het hele getal te nemen, zodat$3.99en$39.99terecht niets matchen.Dit is een geval waarin een lookahead zijn nut bewijst: “niet gevolgd door een decimale punt” kun je niet met een gewone capturende groep uitdrukken, omdat er niets is om te capturen — alleen een voorwaarde om te controleren.
Cursusnavigatie
← Tussen haakjes | Bijwoorden →