Lektionen des Moduls (2/4)
Negatives Lookahead: `(?!...)`
Das negative Lookahead (?!...) ist das dunkle Gegenstück des positiven Lookaheads:
Es erfordert, dass das angegebene Muster der aktuellen Position NICHT folgt. Es ist
weiterhin von der Breite Null: Es werden keine Zeichen konsumiert.
Pattern: \d+(?! euro)
Sample: Prezzo 100 euro, sconto 25 euro, totale 75 dollari.
^^Nur 75 wird gematcht, da es die einzige Ziffernfolge ist, auf die NICHT
euro folgt. Auf die Ziffern 100 und 25 folgt euro und sie werden ausgeschlossen.
Typische Muster für negatives Lookahead
^(?!.*errore).*$-- eine Zeile, die das Wort "errore" NICHT enthält.\b(?!the\b)\w+\b-- ein Wort, das nichttheist.(?!\s)-- die aktuelle Position ist KEIN Whitespace (nützlich als "Trim").
Pattern: ^(?!.*\.bak$).*$
Sample (mehrzeilig mit m-Flag):
foto.jpg
backup.bak
documento.txt
Match: foto.jpg, documento.txt (schließt backup.bak aus)Fortgeschrittene Ausschlüsse über negatives Lookahead
Das negative Lookahead (?!...) ist unerlässlich für die Implementierung von Ausschlusslogik (z. B. um zu überprüfen, dass ein Passwort keine Wörterbuchwörter enthält oder dass ein Bezeichner kein reserviertes Schlüsselwort wie class oder function ist).
Probiere es aus
Finde jede Zahl, auf die NICHT ' euro' folgt (schließe also die Euro-Preise aus).
Hinweis anzeigen
Verwende (?! ...), um zu sagen 'darf NICHT folgen'. Die Sequenz ` euro` darf danach nicht erscheinen.
Lösung nach 3 Versuchen verfügbar
Wiederholungsübung
Finde jedes Wort mit mindestens 3 Buchstaben, das NICHT 'the' ist (case-insensitive).
Hinweis anzeigen
Öffne direkt nach \b ein negatives Lookahead (?!the\b), das nur das Wort the ausschließt.
Lösung nach 3 Versuchen verfügbar
Zusätzliche Herausforderung
Finde alle Wörter bestehend aus Buchstaben, die den Buchstaben `x` an keiner Stelle enthalten (z. B. Match `test`, `game`, aber nicht `extra`, `box`).
Hinweis anzeigen
Verwende ein negatives Lookahead (?!\w*x) direkt nach der Wortgrenze \b.
Lösung nach 3 Versuchen verfügbar