Was sind reguläre Ausdrücke (Regex)
Reguläre Ausdrücke (Regex) sind eine Mustersprache zur Suche, Validierung und Verarbeitung von Text.
Mit Regex können Sie:
bestimmte Textfragmente finden (z. B. E-Mail-Adressen, URLs, Zahlen)
Datenformate validieren (Formularprüfung)
Text ersetzen und bereinigen
strukturierte Daten aus Strings extrahieren
Regex wird широко in der Entwicklung, Datenanalyse, SEO und Automatisierung eingesetzt.
Dieses Tool ermöglicht es, reguläre Ausdrücke in Echtzeit zu testen und die Ergebnisse sofort zu sehen.
Damit können Sie:
prüfen, ob ein Text einem Muster entspricht
alle Übereinstimmungen in einem Text anzeigen
komplexe Ausdrücke debuggen
verschiedene Regex-Varianten ohne Code testen
Beliebte Regex-Engines und ihre Unterschiede
Reguläre Ausdrücke sind nicht vollständig universell. Die Syntax hängt von der Programmiersprache und der verwendeten Engine ab.
Engine | Verwendung | Besonderheiten |
|---|
JavaScript (ECMAScript) | Browser, Node.js | Eingeschränkter Lookbehind (abhängig von Version) |
PCRE | PHP, viele Tools | Eine der leistungsfähigsten Engines |
Python (re) | Python | Einige PCRE-Funktionen fehlen |
Java (Pattern) | Java | Strenge Syntax |
.NET | C# | Erweiterte Funktionen |
Testen Sie Regex immer in der Zielumgebung. Achten Sie besonders auf Unterschiede bei Lookbehind und Unicode-Unterstützung. Für plattformübergreifende Lösungen sollten Sie einfachere Muster verwenden.
Regex-Flags (Modifikatoren)
Flags sind Parameter, die das Verhalten eines Musters verändern.
Flag | Bedeutung |
|---|
i | Groß-/Kleinschreibung ignorieren |
g | Globale Suche |
m | Mehrzeilenmodus |
s | Dotall (schließt \n in . ein) |
u | Unicode |
Sonderzeichen in regulären Ausdrücken
Typen | Symbol | Beschreibung |
|---|
Anker (Positionen) | ^ | Anfang der Zeichenkette |
Anker (Positionen) | $ | Ende der Zeichenkette |
Anker (Positionen) | \b | Wortgrenze |
Anker (Positionen) | \B | Keine Wortgrenze |
Metazeichen | . | Beliebiges Zeichen außer Zeilenumbruch (\n) |
Metazeichen | | | ODER-Operator |
Metazeichen | \ | Escape-Zeichen |
Literale | a | Zeichen „a“ |
Literale | ab | Zeichenkette „ab“ |
Quantifizierer | * | 0 oder mehr Wiederholungen |
Quantifizierer | ? | 0 oder 1 Wiederholung |
Quantifizierer | + | 1 oder mehr Wiederholungen |
Quantifizierer | {5} | Genau 5 Wiederholungen |
Quantifizierer | {5,} | 5 oder mehr Wiederholungen |
Quantifizierer | {5,10} | Zwischen 5 und 10 Wiederholungen |
Zeichenklassen | \s | Leerzeichen |
Zeichenklassen | \S | Kein Leerzeichen |
Zeichenklassen | \w | Wortzeichen (alphanumerisch + Unterstrich) |
Zeichenklassen | \W | Kein Wortzeichen |
Zeichenklassen | \d | Ziffer |
Zeichenklassen | \D | Keine Ziffer |
Escape-Sequenzen | [\b] | Backspace |
Escape-Sequenzen | \c | Steuerzeichen |
Escape-Sequenzen | \n | Zeilenumbruch |
Escape-Sequenzen | \t | Tabulator |
Escape-Sequenzen | \r | Wagenrücklauf |
Escape-Sequenzen | \ZZZ | Oktalzeichen |
Escape-Sequenzen | \xZZ | Hexadezimalzeichen |
Escape-Sequenzen | \0 | Null-Zeichen |
Escape-Sequenzen | \v | Vertikaler Tabulator |
Gruppen | (xyz) | Capturing Group |
Gruppen | (?:xyz) | Non-Capturing Group |
Mengen und Bereiche | [xyz] | Beliebiges Zeichen aus x, y oder z |
Mengen und Bereiche | [^xyz] | Kein Zeichen aus x, y oder z |
Mengen und Bereiche | [a-q] | Bereich von a bis q |
Mengen und Bereiche | [0-7] | Bereich von 0 bis 7 |
Ersetzungsmuster | $` | Text vor dem Match |
Ersetzungsmuster | $' | Text nach dem Match |
Ersetzungsmuster | $+ | Letzte gefundene Gruppe |
Ersetzungsmuster | $& | Gesamter Treffer |
Ersetzungsmuster | $n | n-te Gruppe (z. B. $1, $2) |
Lookarounds | (?=xyz) | Positiver Lookahead |
Lookarounds | (?!xyz) | Negativer Lookahead |
Lookarounds | (?<=xyz) | Positiver Lookbehind |
Lookarounds | (?<!xyz) | Negativer Lookbehind |
Kommentare | (?#comment) | Kommentar (wird ignoriert) |
Häufig verwendete Regex-Muster
Aufgabe | Regex |
|---|
Nur Ziffern | ^\d+$ |
Nur lateinische Buchstaben | ^[A-Za-z]+$ |
Datum (DD.MM.YYYY) | \d{2}\.\d{2}\.\d{4} |
Domain | ^[a-z0-9.-]+\.[a-z]{2,}$ |
URL | https?:\/\/[^\s]+ |
Slug | ^[a-z0-9-]+$ |
E-Mail (einfach) | ^[^\s@]+@[^\s@]+\.[^\s@]+$ |
E-Mail (streng) | ^[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,}$ |
Telefon (allgemein) | ^\+?\d{7,15}$ |
HTML-Tags | <[^>]+> |
Starkes Passwort | ^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[\W_]).{12,}$ |
UUID | ^[0-9a-fA-F-]{36}$ |
HEX-Farbe | ^#([0-9a-fA-F]{3}|[0-9a-fA-F]{6})$ |
IP (IPv4) | ^(\d{1,3}\.){3}\d{1,3}$ |
MAC-Adresse | ^([0-9A-Fa-f]{2}:){5}[0-9A-Fa-f]{2}$ |
Häufige Fehler bei Regex
Reguläre Ausdrücke wirken oft einfach, bergen aber viele versteckte Feinheiten. Im Folgenden werden häufige Fehler aufgeführt, die zu falschen Ergebnissen führen.
Syntax- und Logikfehler
Fehlendes Escaping: . steht für jedes Zeichen → verwenden Sie \.
Falsche Verwendung von Quantifizierern: *, +, {} gelten für das vorherige Element
Verwechslung von greedy und lazy: .* ist greedy → verwenden Sie .*? für minimale Treffer
Probleme bei der Zeichenkettenverarbeitung
Fehlende Anker ^ und $: sonst wird innerhalb der Zeichenkette gesucht
Groß-/Kleinschreibung: "Test" ≠ "test" → ggf. i-Flag verwenden
Missverständnis bei Leerzeichen: \s umfasst auch Tabs, Zeilenumbrüche usw.
Praktische Fehler
Verwendung von \w für Unicode: meist nur [A-Za-z0-9_]
Versuch, komplexe Formate (HTML, JSON) mit Regex zu parsen → besser Parser verwenden
Zu komplexe Ausdrücke: schwer wartbar und fehleranfällig
Performance-Probleme