Direkt zum Hauptinhalt springen
eLearner.app
Modul 6 · Lektion 3 von 423/32 im Kurs~12 min
Lektionen des Moduls (3/4)

Lookbehind: `(?<=...)` `(?<!...)`

Lookbehinds (Rückschauen) sind das Spiegelbild von Lookaheads: Sie blicken hinter die aktuelle Position und sind ebenfalls von der Breite Null.

  • (?<=...) -- positives Lookbehind: Das Muster muss vorausgehen.
  • (?<!...) -- negatives Lookbehind: Das Muster darf NICHT vorausgehen.
Code
Pattern: (?<=\$)\d+
Sample:  Costo $100, sconto -25, totale $75.
                ^^^                  ^^

Das $ ist nicht im Treffer, sondern fungiert als Bedingung: Nur Ziffern, denen das Dollarzeichen vorausgeht, matcht die Engine.

Negatives Lookbehind

Code
Pattern: (?<!\w)\d+
Sample:  Codice abc123 e numero 456.
                              ^^^

(?<!\w) erfordert, dass vor den Ziffern KEIN Wortzeichen steht: abc123 wird ausgeschlossen (vor 123 steht c, ein \w), 456 matcht (davor steht ein Leerzeichen).

Hauptunterschied zum nicht-erfassenden Gruppe

Code
\$\d+         matcht "$100": Der Treffer enthält das Dollarzeichen.
(?<=\$)\d+    matcht "100": Der Treffer enthält NUR die Ziffern.

Wenn du den "reinen" Wert ohne das Präfix extrahieren musst, ist Lookbehind die richtige Wahl.

Lookbehind-Kompatibilität in JavaScript

Positives (?<=...) und negatives (?<!...) Lookbehind prüfen, was der aktuellen Position vorausgeht. In JavaScript werden sie ab ES2018 unterstützt; in älteren Browsern oder Legacy-Node.js-Engines würden sie Syntax-Kompilierungsfehler verursachen.

Probiere es aus

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

Extrahiere nur den numerischen Betrag (ohne das $-Zeichen) aus den Preisen im Text.

Editor wird geladen…
Hinweis anzeigen

Verschiebe \$ in ein positives Lookbehind (?<=\$): Eine Positionsbedingung, kein Teil des Treffers.

Lösung nach 3 Versuchen verfügbar

Wiederholungsübung

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

Finde jede Ziffernfolge, der kein Buchstabe oder keine Ziffer vorausgeht (d. h. 'isolierte' Zahlen, keine Teile von Code wie `abc123`).

Editor wird geladen…
Hinweis anzeigen

Verwende ein negatives Lookbehind (?<!\w), um auszuschließen, wenn davor ein Buchstabe oder eine Ziffer steht.

Lösung nach 3 Versuchen verfügbar

Zusätzliche Herausforderung

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

Finde nur die Ziffern negativer Zahlen (Ziffern, denen das `-`-Zeichen vorausgeht), und schließe das Minuszeichen aus dem Treffer aus.

Editor wird geladen…
Hinweis anzeigen

Verschiebe das Minuszeichen - in ein positives Lookbehind (?<=-).

Lösung nach 3 Versuchen verfügbar