EMZETT.
Login

RegEx (Reguläre Ausdrücke)

Kurz: Eine kompakte Mustersprache, um Text nach bestimmten Strukturen zu durchsuchen, zu prüfen oder zu ersetzen — z. B. um zu testen, ob eine Eingabe wie eine gültige E-Mail-Adresse aussieht.

Genauer: Ein regulärer Ausdruck beschreibt ein Suchmuster aus literalen Zeichen und Sonderzeichen mit besonderer Bedeutung (z. B. \d für eine Ziffer, * für “beliebig oft wiederholt”). RegEx ist extrem mächtig, aber bei komplexen Mustern schnell schwer lesbar — für einfache Prüfungen (z. B. “enthält String X”) ist oft eine normale String-Methode klarer und wartbarer.

Im Detail

Die wichtigsten Bausteine eines regulären Ausdrucks:

.       - ein beliebiges Zeichen
\d      - eine Ziffer (0-9)
\w      - ein "Wortzeichen" (Buchstabe, Ziffer, Unterstrich)
\s      - ein Leerraum-Zeichen (Leerzeichen, Tab, Zeilenumbruch)
*       - das vorherige Element 0-mal oder öfter
+       - das vorherige Element 1-mal oder öfter
?       - das vorherige Element 0-mal oder 1-mal (optional)
[abc]   - eines der Zeichen a, b oder c
^       - Anfang der Zeichenkette
$       - Ende der Zeichenkette

Ein einfaches Beispiel — ein Muster, das grob prüft, ob eine Eingabe wie eine E-Mail-Adresse aussieht:

Muster: ^[\w.]+@[\w]+\.[a-z]+$
 
"test@example.com"   -> passt
"keine-email"          -> passt nicht (kein @)

RegEx wird typischerweise für drei Aufgaben eingesetzt: Validierung (entspricht eine Eingabe einem erwarteten Format?), Suche (an welchen Stellen im Text kommt ein Muster vor?) und Ersetzen (alle Treffer eines Musters durch etwas anderes austauschen, z. B. alle Mehrfach-Leerzeichen durch ein einzelnes).

Ein bekannter, oft zitierter Nachteil komplexer regulärer Ausdrücke ist ihre Lesbarkeit — ein dicht gepacktes Muster mit vielen Sonderzeichen ist für jemand anderen (oder das eigene Ich in einem halben Jahr) oft kaum noch zu entziffern, ohne es Zeichen für Zeichen zu zerlegen. Ein weiterer, technischerer Fallstrick ist “katastrophales Backtracking”: bestimmte, schlecht konstruierte Muster können bei bestimmten Eingaben exponentiell lange zur Auswertung brauchen und damit faktisch das Programm einfrieren (ReDoS, “Regular Expression Denial of Service”) — ein Grund, RegEx-Muster besonders bei nutzergesteuerten Eingaben mit Bedacht zu konstruieren oder zu testen.

Siehe auch: Strings, Special Characters