Worum geht’s
Reguläre Ausdrücke filtern Logs, validieren Eingaben und extrahieren Felder aus
Text — in Skripten, grep, Editoren und Monitoring-Regeln. Wer die Grundbausteine
beherrscht, schreibt präzise Suchmuster, statt mit *-Platzhaltern zu raten. Das
ist zentrales Automatisierungs-Handwerk.
Konzept
- Wörtliche Zeichen matchen sich selbst:
catfindet „cat”. - Zeichenklassen:
[abc]eines davon,[a-z]Bereich,[^0-9]alles außer Ziffern. Kürzel:\dZiffer,\wWort-Zeichen,\sWhitespace,.jedes Zeichen (außer Zeilenumbruch). - Quantoren:
*(0+),+(1+),?(0 oder 1),{n}genau n,{n,m}Bereich.\d{3}= genau drei Ziffern. - Anker:
^Zeilenanfang,$Zeilenende.^ERRORfindet nur Zeilen, die mit ERROR beginnen.\bist eine Wortgrenze. - Gruppen:
( … )fasst zusammen und fängt (Capture-Group, für Extraktion).|ist ODER:cat|dog. - Flags:
gglobal (alle Treffer),iignoriert Groß/Klein,mmultiline (^/$je Zeile),slässt.auch Zeilenumbrüche matchen. - Greedy vs. genügsam:
.*ist gierig (so viel wie möglich),.*?genügsam (so wenig wie möglich) — wichtig beim Extrahieren zwischen Trennern.
Vorsicht: Verschachtelte Quantoren wie (a+)+ können katastrophales
Backtracking auslösen und hängen. Muster eng halten.
Ein Muster zerfällt in Token, die zusammen den Treffer bestimmen:
/\b\d{4}-\d{2}-\d{2}\b/ -
\bWortgrenze — verankert ohne Zeichen zu verbrauchen -
\d{4}genau 4 Ziffern (Jahr) -
-Literal: Bindestrich -
\d{2}genau 2 Ziffern (Monat) -
-Literal: Bindestrich -
\d{2}genau 2 Ziffern (Tag) -
\bWortgrenze — Ende
Quantoren wie {4} sind exakt — \d{2,4} wäre 2 bis 4.
Anker (\b, ^, $) verbrauchen kein Zeichen, sie
legen nur die Position fest. Greedy-Quantoren (+, *) immer
gegen Backtracking-Last prüfen.
Beispiel-Fall
Gegeben: Aus Logzeilen sollen IPv4-Adressen gefunden werden, z. B.
192.168.10.42.
- Ein Oktett ist 1–3 Ziffern:
\d{1,3}. - Vier Oktette, durch Punkte getrennt — der Punkt muss escaped werden
(
\.), sonst matcht er jedes Zeichen. - Muster:
\b\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}\b. - Mit Flag
gfindet man alle Vorkommen in der Zeile.
Häufiger Fehler: \d{1,3}.\d{1,3}... ohne \. — der unmaskierte Punkt matcht
auch 1923168 und liefert falsche Treffer. Das \b verhindert, dass mitten in
längeren Zahlenketten gematcht wird.
Anwenden
Der Regex-Tester hebt Treffer live hervor und zeigt Capture-Gruppen in einer Tabelle. Baue dein Muster Stück für Stück auf und prüfe nach jedem Baustein, was sich am Match ändert.
- Füge ein paar Logzeilen mit IP-Adressen als Teststring ein.
- Tippe das Muster \b\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}\b und aktiviere Flag g.
- Beobachte die Live-Hervorhebung der Treffer und vergleiche mit/ohne escapten Punkt.
Selbsttest
Praxis-Challenge
Schreibe ein Muster, das aus Logzeilen Zeitstempel im Format HH:MM:SS extrahiert (z. B. 12:04:12). Teste es im Regex-Tester gegen echte Logzeilen, achte auf escapte Doppelpunkte und überprüfe per Capture-Gruppen-Tabelle, dass nur gültige Uhrzeiten markiert werden.