Raku-Kurs / Reguläre Ausdrücke und Grammatiken / Reguläre Ausdrücke / Lookaround-Assertions / Exercises / Nicht gefolgt von
Lösung: Nicht gefolgt von
Hier ist eine mögliche Lösung der Aufgabe.
Code
say so '50 dollars' ~~ / \d+ >> <!before '%'> /;🦋 Du findest den Quellcode in der Datei not-followed.raku.
Ausgabe
TrueKommentare
<!before '%'>ist ein verneinender Lookahead: Er gelingt nur, wenn der Text direkt hinter der Zahl kein%ist.Das
>>ist eine Wortgrenze, die das Ende der Zahl markiert, und sie ist hier wichtig. Ohne sie würde das gierige\d+zurückweichen: Bei50% offgäbe es die0her und träfe nur5— dem kein%folgt —, das Muster würde also fälschlich gelingen.>>zwingt\d+, die ganze Zahl zu nehmen, sodass der Lookahead am tatsächlichen Ende geprüft wird. Dadurch ergibt50 dollarsTrue, während50% offrichtigerweiseFalseergibt.