Regex – Reguläre Ausdrücke verständlich erklärt

Ein regulärer Ausdruck (engl. regular expression, kurz Regex) ist ein Suchmuster, mit dem sich Text durchsuchen, prüfen und ersetzen lässt. Regex gibt es in fast jeder Programmiersprache und in vielen Kommandozeilen-Tools: grep, sed, awk, Python (re), JavaScript, PHP (preg_*) – die Grundlagen sind überall gleich.

Die wichtigsten Bausteine

  • Literale: Normale Zeichen wie hanse matchen sich selbst.
  • Metazeichen: . = beliebiges Zeichen, ^ = Anfang, $ = Ende.
  • Zeichenklassen: [abc] = a oder b oder c, [a-z] = Kleinbuchstaben. Kurzformen: d (Ziffer), w (Buchstabe/Ziffer/Unterstrich), s (Leerzeichen).
  • Quantifier: * (0 oder mehr), + (1 oder mehr), ? (0 oder 1), {2,4} (2 bis 4).
  • Gruppen & Alternativen: (ab|cd) = ab oder cd; Klammern fangen zugleich Text für spätere Referenzen.
  • Escape: . matcht einen echten Punkt – Sonderzeichen müssen mit Backslash geschützt werden.

Gierig vs. faul

Quantifier sind standardmäßig gierig: <.*> matcht in <a><b> den ganzen String bis zum letzten >. Ein ? nach dem Quantifier macht ihn faul: <.*?> stoppt am ersten >. Bei HTML/XML-Auswertung ist das oft der gewünschte Modus.

Beispiele

# Alle Zeilen mit 4-stelliger Jahreszahl finden (grep -E)
grep -E '[0-9]{4}' log.txt

# E-Mail-Adressen in Python finden
import re
muster = r'[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+.[a-zA-Z]{2,}'
re.findall(muster, text)

Praxistipps

  • Regex in grep/sed braucht oft -E (extended) – siehe Bash-Befehle.
  • Komplexe Muster testen: mit python3 -c oder Online-Testern (z. B. regex101.com) Schritt für Schritt aufbauen.
  • Vorsicht Backtracking: verschachtelte .* können bei langen Eingaben sehr langsam werden.
  • HTML/JSON nicht „von Hand" mit Regex parsen, wenn es Bibliotheken gibt – Regex ist für Textmuster, nicht für strukturierte Formate.

Weiterführend: Python-Befehle, SQL-Befehle und der Glossar-Eintrag Query.