Capturing Groups ·
Non-Capturing Groups ·
Named Groups ·
Lookaround ·
Backreferences ·
Branch Reset
Gruppen sind ein zentrales Konzept in regulären Ausdrücken. Sie ermöglichen das Extrahieren von Teilstrings, bedingte Muster und komplexe Ersetzungen.
Capturing Groups werden mit ( ) erstellt. Sie speichern den gematchten Teilstring und machen ihn über Backreferences verfügbar – ideal für Extraktion und Wiederholungsprüfungen.
| Syntax | Beschreibung | Beispiel |
|---|---|---|
| \1, \2, ... | Backreferenz (nur in Regex) | "(\\w+)\\s+\\1" |
| \g{1}, \g{2} | Backreferenz mit Nummer (Python, PCRE) | "(\\w+)\\s+\\g{1}" |
| \k<name> | Named Backreference | "(?<word>\\w+)\\s+\\k<word>" |
| $1, $2 | Replacement-Referenz | replace("(\\d{4})-(\\d{2})-(\\d{2})", "$3.$2.$1") |
Non-Capturing Groups (?: ) gruppieren Subpattern, speichern aber das Match nicht. Sie sind nützlich für Alternation, Quantifier und sauberere Regex ohne unerwünschte Backreferences.
(?: ), wenn Sie Gruppen für Quantifier oder Alternation benötigen, aber den Inhalt nicht extrahieren wollen. Das verbessert Performance und Lesbarkeit.
Named Groups geben einer Gruppe einen aussagekräftigen Namen, was die Lesbarkeit und Wartbarkeit von komplexen Regex verbessert – besonders bei vielen Gruppen.
Lookaround (Lookahead und Lookbehind) sind Zero-Width-Assertions – sie matchen eine Position, ohne Zeichen zu verbrauchen. Sie prüfen, ob ein bestimmtes Muster vor oder nach der aktuellen Position existiert.
| Syntax | Name | Bedeutung |
|---|---|---|
| (?=...) | Positive Lookahead | Muster MUSS folgen |
| (?!...) | Negative Lookahead | Muster DARF NICHT folgen |
| (?<=...) | Positive Lookbehind | Muster MUSS vorausgehen |
| (?<!...) | Negative Lookbehind | Muster DARF NICHT vorausgehen |
(?<=...), (?<!...)) wird nicht von allen Regex-Engines unterstützt (z.B. JavaScript vor ES2018). Testen Sie Ihre Engine vor der Verwendung.
Backreferences verweisen auf den Inhalt einer zuvor erfassten Gruppe – innerhalb der Regex oder im Ersatztext. Sie sind essenziell für die Erkennung von Wiederholungen und formatierte Ersetzungen.
$1 statt \1 (z.B. JavaScript, Python mit re.sub()). Prüfen Sie die Dokumentation Ihrer Sprache.
Branch Reset (?|...|...) sorgt dafür, dass alle Alternativen in einer Gruppe die gleiche Nummer erhalten. Das vereinfacht die Extraktion bei Alternation.
( )
(?: )
(?<name>)
(?= )
\1
(?|...)
(\d{4})-(\d{2})-(\d{2}) → Datum extrahieren ·
(?<word>\w+)\s+\k<word> → Doppelte Wörter