* ·
+ ·
? ·
{n,m} ·
Greedy vs. Lazy ·
Possessive
Quantifier legen fest, wie oft ein Zeichen oder eine Gruppe wiederholt werden darf. Dieses Cheatsheet erklärt die Unterschiede zwischen Greedy, Lazy und Possessive Quantifiern mit praktischen Beispielen.
Grundlegende Quantifier definieren die minimale und maximale Anzahl von Wiederholungen eines Zeichens oder einer Gruppe.
? macht ein Zeichen optional. Es ist äquivalent zu {0,1}. * ist äquivalent zu {0,} und + zu {1,}.
Greedy Quantifier versuchen, so viele Zeichen wie möglich zu matchen, während das gesamte Pattern noch erfolgreich ist. Sie sind der Standard in den meisten Regex-Engines.
Lazy Quantifier (auch "non-greedy" oder "reluctant") versuchen, so wenig Zeichen wie möglich zu matchen, während das gesamte Pattern noch erfolgreich ist.
Possessive Quantifier sind wie Greedy Quantifier, aber sie geben einmal gefundene Zeichen nie wieder zurück (kein Backtracking). Sie sind schneller, können aber zu fehlenden Matches führen.
Greedy, Lazy und Possessive Quantifier bestimmen, wie viel Text von einem Quantifier erfasst wird. Die Wahl beeinflusst das Ergebnis und die Performance.
| Quantifier | Typ | Backtracking | Match-Verhalten | Performance |
|---|---|---|---|---|
| .* | Greedy | Ja | So viel wie möglich | Mittel |
| .*? | Lazy | Ja | So wenig wie möglich | Mittel (oft langsamer) |
| .*+ | Possessive | Nein | So viel wie möglich (ohne Zurückgeben) | Schnell |
| .+ | Greedy | Ja | 1 oder mehr (so viel wie möglich) | Mittel |
| .+? | Lazy | Ja | 1 oder mehr (so wenig wie möglich) | Mittel |
| .++ | Possessive | Nein | 1 oder mehr (ohne Zurückgeben) | Schnell |
Praxisbeispiele zeigen, wie Quantifier in realen Szenarien eingesetzt werden – von der E-Mail-Validierung bis zum HTML-Parsing.
* + ?
.*
.*?
.*+
G vs L vs P
Beispiele
.* (Greedy) ·
.*? (Lazy) ·
.*+ (Possessive) ·
{2,5} (Bereich)