Direkt zum Hauptinhalt springen
eLearner.app
Modul 6 · Lektion 2 von 422/32 im Kurs~10 min
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.

Code
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 nicht the ist.
  • (?!\s) -- die aktuelle Position ist KEIN Whitespace (nützlich als "Trim").
Code
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

Übung#regex.m6.l2.e1
Versuche: 0Wird geladen…

Finde jede Zahl, auf die NICHT ' euro' folgt (schließe also die Euro-Preise aus).

Editor wird geladen…
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

Übung#regex.m6.l2.e2
Versuche: 0Wird geladen…

Finde jedes Wort mit mindestens 3 Buchstaben, das NICHT 'the' ist (case-insensitive).

Editor wird geladen…
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

Übung#regex.m6.l2.e3
Versuche: 0Wird geladen…

Finde alle Wörter bestehend aus Buchstaben, die den Buchstaben `x` an keiner Stelle enthalten (z. B. Match `test`, `game`, aber nicht `extra`, `box`).

Editor wird geladen…
Hinweis anzeigen

Verwende ein negatives Lookahead (?!\w*x) direkt nach der Wortgrenze \b.

Lösung nach 3 Versuchen verfügbar