Reguläre Ausdrücke für Menschen: Ein praktischer Leitfaden
Reguläre Ausdrücke (Regex) haben ein Imageproblem. Sie sehen aus, als wäre jemand auf seiner Tastatur eingeschlafen: ^[\w.-]+@[\w-]+\.[\w.]+$. Sie tauchen in Code-Reviews, Texteditoren, Suchtools und Formularvalidierungen auf. Entwickler lieben sie oder meiden sie komplett.
Die Wahrheit liegt irgendwo dazwischen. Regex ist wirklich mächtig. Es ist auch wirklich verwirrend am Anfang. Aber man muss nicht jede obskure Funktion beherrschen, um praktischen Nutzen zu ziehen. Eine Handvoll Muster deckt die überwiegende Mehrheit der realen Anwendungsfälle ab.
Was Regex eigentlich macht
Ein regulärer Ausdruck ist ein Muster, das eine Menge von Zeichenketten beschreibt. Sie geben es einem Suchtool und es findet jede Zeichenkette, die dem Muster entspricht. Betrachten Sie es als eine sehr präzise Suchanfrage.
Normale Suche: finde genau „hello" Regex-Suche: finde alles, was wie eine E-Mail-Adresse, eine Telefonnummer, ein Datum, eine URL oder jedes andere beschreibbare Muster aussieht.
Wussten Sie? Reguläre Ausdrücke wurden 1956 vom Mathematiker Stephen Kleene als Notation zur Beschreibung „regulärer Sprachen" in der formalen Sprachtheorie erfunden. Sie fanden ihren Weg in die Informatik durch frühe Unix-Texteditoren in den 1960er und 1970er Jahren.
Die Bausteine
Literale Zeichen
Der einfachste Regex ist nur wörtlicher Text. Das Muster hello findet die Zeichenkette „hello". Nichts Ausgefallenes.
Der Punkt (.) — Beliebiges einzelnes Zeichen
Ein Punkt passt auf jedes einzelne Zeichen (außer einem Zeilenumbruch).
h.tpasst auf „hat", „hit", „hot", „hut" und sogar „h3t"
Zeichenklassen ([]) — Bestimmte Zeichen
Eckige Klammern definieren eine Menge erlaubter Zeichen an dieser Position.
[aeiou]passt auf jeden einzelnen Vokal[0-9]passt auf jede Ziffer[A-Za-z]passt auf jeden Buchstaben (Groß- oder Kleinbuchstabe)[^0-9]passt auf jedes Zeichen, das KEINE Ziffer ist (das^innerhalb der Klammern bedeutet „nicht")
Quantifizierer — Wie viele
Diese Symbole steuern die Wiederholung:
| Symbol | Bedeutung | Beispiel | Passt auf |
|---|---|---|---|
* |
Null oder mehr | ab*c |
„ac", „abc", „abbc", „abbbc" |
+ |
Eins oder mehr | ab+c |
„abc", „abbc", „abbbc" (nicht „ac") |
? |
Null oder eins | colou?r |
„color" und „colour" |
{3} |
Genau 3 | a{3} |
„aaa" |
{2,4} |
Zwischen 2 und 4 | a{2,4} |
„aa", „aaa", „aaaa" |
Anker — Position
^am Anfang bedeutet „Beginn der Zeichenkette"$am Ende bedeutet „Ende der Zeichenkette"^hello$passt nur auf die exakte Zeichenkette „hello", nicht auf „say hello" oder „hello world"
Kurzschrift-Klassen
Häufige Zeichenklassen haben Abkürzungen:
| Kurzschrift | Äquivalent | Bedeutung |
|---|---|---|
\d |
[0-9] |
Jede Ziffer |
\w |
[A-Za-z0-9_] |
Jedes „Wort"-Zeichen |
\s |
[ \t\n\r] |
Jedes Leerzeichen |
\D |
[^0-9] |
Jedes Nicht-Ziffer-Zeichen |
\W |
[^A-Za-z0-9_] |
Jedes Nicht-Wort-Zeichen |
\S |
[^ \t\n\r] |
Jedes Nicht-Leerzeichen |
Gruppen (()) — Gruppierung und Erfassung
Klammern gruppieren Teile eines Musters. Das ist nützlich, um Quantifizierer auf eine Gruppe anzuwenden oder um bestimmte Teile eines Treffers zu extrahieren.
(ab)+passt auf „ab", „abab", „ababab"(\d{3})-(\d{4})passt auf „555-1234" und erfasst „555" und „1234" separat
Der Pipe-Operator (|) — Oder
Der Pipe-Operator bedeutet „oder".
cat|dogpasst auf „cat" oder „dog"(jpg|png|gif)passt auf eine dieser drei Bilddateierweiterungen
Praktische Muster, die Sie sofort verwenden können
E-Mail-Adresse abgleichen (einfach)
[\w.-]+@[\w-]+\.[\w.]+
Aufgeschlüsselt:
[\w.-]+— ein oder mehrere Wortzeichen, Punkte oder Bindestriche (der lokale Teil)@— wörtliches @-Zeichen[\w-]+— ein oder mehrere Wortzeichen oder Bindestriche (die Domain)\.— wörtlicher Punkt (escaped, weil.ein Sonderzeichen ist)[\w.]+— ein oder mehrere Wortzeichen oder Punkte (die TLD)
Warnung E-Mail-Validierung mit Regex ist bekanntermaßen schwierig, perfekt umzusetzen. Das einfache Muster oben deckt 99 % der realen E-Mail-Adressen ab, behandelt aber nicht jeden Grenzfall, der in der RFC-Spezifikation definiert ist. Für Produktionsvalidierung verwenden Sie die E-Mail-Validierungsbibliothek Ihrer Programmiersprache.
Telefonnummer abgleichen (US-Format)
\(?\d{3}\)?[-.\s]?\d{3}[-.\s]?\d{4}
Dies passt auf:
- (555) 123-4567
- 555-123-4567
- 555.123.4567
- 555 123 4567
URL abgleichen
https?://[\w.-]+(/[\w./-]*)?
Dies passt auf:
Datum abgleichen (YYYY-MM-DD)
\d{4}-\d{2}-\d{2}
Dies passt auf: 2026-03-23, 1999-12-31 usw.
Doppelte Wörter finden
\b(\w+)\s+\1\b
Dies findet wiederholte Wörter wie „the the" oder „is is". Das \1 bezieht sich auf das, was von der ersten Gruppe erfasst wurde.
IPv4-Adresse abgleichen
\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}
Dies passt auf Muster wie 192.168.1.1 oder 10.0.0.255.
Tipps zum Schreiben von Regex
1. Einfach beginnen, dann verfeinern
Versuchen Sie nicht, beim ersten Anlauf den perfekten Regex zu schreiben. Beginnen Sie mit einem breiten Muster, testen Sie es mit Ihren Daten und verfeinern Sie es schrittweise.
2. Immer testen
Regex ist leicht falsch zu machen. Ein fehlender Quantifizierer oder ein nicht-escapeter Punkt kann komplett verändern, was gefunden wird. Testen Sie Ihr Muster immer mit realen Daten, bevor Sie es in der Produktion einsetzen.
3. Sonderzeichen escapen
Wenn Sie einen wörtlichen Punkt, eine Klammer oder ein anderes Sonderzeichen finden müssen, escapen Sie es mit einem Backslash: \., \(, \[.
4. Kommentare und benannte Gruppen verwenden
Verwenden Sie bei komplexen Mustern benannte Gruppen und Kommentare (wo unterstützt), um den Regex lesbar zu machen. Ihr zukünftiges Ich wird es Ihnen danken.
5. Wissen, wann man Regex NICHT verwenden sollte
Regex ist das falsche Werkzeug zum Parsen von HTML, XML, JSON oder jeder verschachtelten Struktur. Verwenden Sie dafür einen richtigen Parser.
Tipp Testen und debuggen Sie Ihre Regex-Muster in Echtzeit: Regex-Muster testen. Fügen Sie Ihr Muster und Testdaten ein und sehen Sie Treffer sofort hervorgehoben.
Jetzt Regex testen:
Kostenlos, sofortiges Feedback und ohne Registrierung.