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

Lookaround in der Praxis

Lass uns alle vier Formen von Lookaround in realen Szenarien zusammenbringen. Lookarounds glänzen besonders, wenn du Folgendes tun musst:

  1. Einen Wert ohne den Kontext extrahieren, der ihn identifiziert.
  2. Einen String gegen mehrere unabhängige Bedingungen validieren.
  3. Treffer filtern, die bestimmte Bedingungen erfüllen, andere aber nicht.

Passwort-Validierung

Code
Pattern: ^(?=.*[A-Z])(?=.*\d)(?=.*[^a-zA-Z\d]).{8,}$
Checks:
  - mindestens ein Großbuchstabe (?=.*[A-Z])
  - mindestens eine Ziffer        (?=.*\d)
  - mindestens ein Symbol        (?=.*[^a-zA-Z\d])
  - Mindestlänge 8               .{8,}

Jedes Lookahead prüft eine Bedingung, beginnend von Anfang (^). Sie sind alle von der Breite Null: Die Engine bleibt bei Position 0 stehen und konsumiert dann mit .{8,}$.

Extraktion zwischen Begrenzern

Code
Pattern: (?<=\().+?(?=\))
Sample:  Funzione foo(bar) e baz(qux, qix)
Match: "bar", "quux, qix" (ohne Klammern)

Lookbehind + Lookahead + Lazy-Quantifizierer: Extrahiert den Inhalt innerhalb der Klammern, ohne diese einzuschließen.

Kombination von Lookahead und Lookbehind

Die gemeinsame Verwendung von Lookahead und Lookbehind ermöglicht die Isolierung von Strings, die sich innerhalb bestimmter Tags oder Formate befinden (z. B. das Extrahieren von Text zwischen zwei Tags, ohne die Tags in den endgültigen Treffer aufzunehmen). Dies vermeidet nachfolgende String-Bereinigungsoperationen.

Probiere es aus

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

Extrahiere den Wert jeder Zuweisung des Typs `key=value` aus dem Log: NUR die Werte (keine Schlüssel, kein `=`). Werte können Buchstaben und Ziffern enthalten.

Editor wird geladen…
Hinweis anzeigen

Verschiebe `=` in ein Lookbehind (?<==): Auf diese Weise enthält der Treffer nur den Wert.

Lösung nach 3 Versuchen verfügbar

Wiederholungsübung

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

Finde heraus, welche Wörter mindestens EINEN Großbuchstaben UND mindestens EINE Ziffer enthalten (in beliebiger Reihenfolge), und lokalisiere sie im Text.

Editor wird geladen…
Hinweis anzeigen

Doppeltes Lookahead am Anfang: (?=\w*[A-Z])(?=\w*\d). Konsumiere dann das Wort mit \w+.

Lösung nach 3 Versuchen verfügbar

Zusätzliche Herausforderung

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

Extrahiere nur numerische Ziffern, die exakt in Klammern eingeschlossen sind, z. B. extrahiere `102` aus `(102)`, ohne die Klammern zu erfassen.

Editor wird geladen…
Hinweis anzeigen

Kombiniere ein positives Lookbehind (?<=\( ) für die öffnende Klammer und ein positives Lookahead (?=\) ) für die schließende.

Lösung nach 3 Versuchen verfügbar