Regex grob und Kosten
Regex sind mächtig, aber können backtracken und teuer werden. Für festes exaktes Muster sind KMP oder indexOf oft klarer und vorhersehbarer.
naive vs KMP-Komplexität gegenüberstellen.
Wo gebraucht
Validierung, Log-Extraktion, Routing-Regeln. Katastrophale Backtracking-Regex ist ein bekannter DoS-Vektor; einfache Pattern oder possessive Quantifier bevorzugen.
Vertiefung
Reguläre Ausdrücke beschreiben Mengen von Zeichenfolgen durch Verkettung, Alternativen und Wiederholungen. Viele praktische Engines ergänzen Rückreferenzen und weitere Konstrukte. Dadurch ist ihr Verhalten mächtiger als das klassischer endlicher Automaten und ihre Laufzeit schwieriger vorherzusagen.
Mehrdeutige, verschachtelte Wiederholungen können sehr viele alternative Zerlegungen derselben Eingabe erzeugen. Begrenzte Quantifizierer, eindeutige Teilmuster oder possessive Varianten reduzieren solche Suchräume. Für häufig verwendete Muster lohnt es sich ausserdem, das Pattern einmal zu kompilieren.
Schwierigkeitsstufen
- Zeichenklassen, Gruppen und Quantifizierer lesen.
- Mehrdeutige Wiederholungen in einem Muster erkennen.
- Ein riskantes Muster semantisch gleichwertig und eindeutiger formulieren.
Fallstricke
Ein kurzer Ausdruck ist nicht automatisch billig. Ausserdem bedeutet matches in Java eine Prüfung der gesamten Eingabe, während find nach einem passenden Teilstück sucht.
Tasks
Card Info
- Topic: Algorithmen und Datenstrukturen
- Difficulty: Intermediate
- Completed: 0 users