Vollständige Praxisreferenz für reguläre Ausdrücke (Mehrsprachig & Mehrzeilig)

Überblick (What)

Dieser Artikel ist eine umfassende technische Referenz zur praktischen und portablen Verwendung regulärer Ausdrücke. Er behandelt Syntax, mehrzeilige Musterverarbeitung, Ersetzungstechniken, Tool-Kompatibilität und wartbare Pattern-Entwürfe.

Ziel (Why)

Reguläre Ausdrücke sind essenziell für Textverarbeitung: Validierung, Parsing, Transformation und Datenextraktion. Sie sind in nahezu allen Programmiersprachen und Plattformen nutzbar – korrekt eingesetzt ermöglichen sie effiziente Automatisierung und Analyse.


Teil 1: Grundlegende Syntax

Muster Bedeutung Beispiel Übereinstimmung
. Beliebiges Zeichen außer Zeilenumbruch a.c abc, a-c
* 0 oder mehr Wiederholungen des Zeichens davor go*gle ggle, google
+ 1 oder mehr Wiederholungen des Zeichens davor go+gle gogle, google
? 0 oder 1 Wiederholung des Zeichens davor colou?r color, colour
{n} Genau n Wiederholungen a{3} aaa
{n,m} Zwischen n und m Wiederholungen a{2,4} aa, aaa, aaaa
^ Zeilenanfang ^abc Zeilenbeginn mit abc
$ Zeilenende abc$ Zeilenende mit abc
[] Eine von mehreren Optionen [abc] a, b, c
[^] Nicht diese Zeichen [^0-9] Nicht-Ziffern
\d Ziffern \d+ 123, 007
\D Nicht-Ziffern \D+ abc, XYZ
\w Wortzeichen (Buchstaben/Ziffern/_) \w+ abc_123
\W Nicht-Wortzeichen \W+ #@!, Leerzeichen
\s Whitespace \s+ Space, Tab, Zeilenumbruch
\S Nicht-Whitespace \S+ abc, 123
` ` Oder `foo
() Gruppierung (abc)+ abcabc
\b Wortgrenze \bregex\b Nur das Wort selbst

Teil 2: Nützliche Muster (Mehrsprachig)

Zweck Pattern Hinweis
Nur Zahlen ^\d+$ Ganze Zeichenkette
Dezimalzahl ^\d+\.\d+$ Genau ein Punkt erlaubt
Alphanumerisch ^[a-zA-Z0-9]+$ Für Benutzer-IDs geeignet
E-Mail (einfach) ^[\w.-]+@[\w.-]+\.[a-zA-Z]{2,}$ Typischer Aufbau
URL (http/https) https?://[\w.-]+\.[a-zA-Z]{2,}(/[\w./?=&%-]*)? Einschließlich Pfad
ISO-Datum \d{4}-\d{2}-\d{2} YYYY-MM-DD
Internationale Tel. \+\d{1,3}[\s-]?\d{1,14} z.B. +49 151...
Benutzername ^[a-zA-Z0-9._-]{3,20}$ Für soziale Netzwerke
Passwortstärke ^(?=.*[a-z])(?=.*[A-Z])(?=.*\d).{8,}$ Mind. 8 Zeichen, Mix

Teil 3: Mehrzeilige Matches (Multi-Line)

🔹 Warum [\s\S]*? verwenden?

Das Zeichen . matcht standardmäßig keine Zeilenumbrüche. Für sichere mehrzeilige Matches empfiehlt sich:

[\s\S]*?

Dies deckt alle Zeichen ab, einschließlich Zeilenumbrüchen – nicht gierig.

💡 Tipp: In manchen Tools wie VSCode ist [\s\S\n]*? möglich – redundant, aber manchmal robuster.

🔹 Häufige Anwendungsfälle

Zweck Pattern Hinweis
Beliebiger Textblock [\s\S]*? Sicher auch über Zeilen hinweg
HTML-Div-Block <div[\s\S]*?</div> Vom öffnenden bis schließenden
HTML-Kommentare <!--[\s\S]*?--> Gilt für alle Kommentare
Markdown-Codeblock "[\s\S]*?" Für ...-Bereiche

Teil 4: Ersetzungstechniken

🔹 Gruppenzugriff

Ersetzungen verwenden Gruppenreferenzen:

  • ${1}, ${2} (VSCode, .NET, Python)
  • $1, $2 (JavaScript, sed)

🔹 Praktische Beispiele

Aufgabe Muster Ersetzung
Wörter tauschen (\w+)\s+(\w+) ${2} ${1}
Text mit <span> >([^<]+)< ><span>${1}</span><
CSV zu JSON ^([^,]+),([^,]+),([^,]+)$ { "a": "${1}", "b": "${2}", "c": "${3}" }
Datumsformat ändern (\d{4})/(\d{2})/(\d{2}) ${1}-${2}-${3}
CamelCase zu snake_case ([a-z])([A-Z]) ${1}_${2}

Teil 5: Tool-Kompatibilität & Flags

Tool Mehrzeilig Nicht-gierig Ersetzungsformat Hinweise
VSCode ✅ (Suche) ${1} [\s\S]*? oder [\s\S\n]*? empfohlen
JavaScript ✅ (Flag s) $1, $<name> Named Groups verfügbar
Python (re) ✅ (DOTALL) \g<1>, \1 Verwende rohe Strings r""
sed \1, \2 Nur einfache Syntax
grep/egrep Nur Suche, keine Ersetzung möglich

Teil 6: Designprinzipien & Antipatterns

✅ Best Practices

  • Immer [\s\S]*? für mehrzeilige Blöcke verwenden (ggf. [\s\S\n]*?)
  • .* vermeiden – nutze stattdessen nicht-gierige Varianten
  • Nicht-capturing Gruppen mit (?:...) schreiben, wenn Capturing nicht nötig
  • Named Groups für bessere Lesbarkeit (z. B. (?<year>\d{4}))
  • Für komplexe Patterns: Kommentare oder re.VERBOSE (Python)

❌ Antipatterns

Pattern Problem
.* Gierige Matches, oft zu weitreichend
[^a-z] Keine Unterstützung für Umlaute usw.
Verschachtelung Reguläre Ausdrücke ungeeignet für HTML/XML
.+ Matcht auch Leerzeilen oder nur Spaces

Fazit (Conclusion)

Diese Referenz bietet einen vollständigen, praktischen Überblick über den professionellen Einsatz regulärer Ausdrücke.
Verwende für mehrzeilige Inhalte zuverlässig [\s\S]*?, beachte Tool-spezifische Besonderheiten und entwickle wartbare, lesbare Patterns.

Gut gestaltete reguläre Ausdrücke sind ein mächtiges und wiederverwendbares Werkzeug im Entwickleralltag.

タイトルとURLをコピーしました