Fragen
Wo kann ich ein Muster testen?
Der Regex-Tester hebt Treffer live hervor, listet Gruppen, zeigt eine Ersetzungsvorschau und erklärt das Muster Token für Token.
Die Syntax, die jede gängige Engine teilt, mit den Unterschieden in einer Tabelle am Ende.
| ^ $ | Anfang / Ende des Textes (der Zeile mit m-Flag) |
| \A \z \Z | Anfang / Ende des Textes unabhängig von Flags (nicht in JS) |
| \b \B | Wortgrenze / keine |
| . | jedes Zeichen außer Zeilenumbruch (jedes mit s-Flag) |
| \d \w \s | Ziffer, Wortzeichen, Leerraum; \D \W \S negieren |
| [abc] [a-z] [^abc] | Menge, Bereich, negierte Menge |
| [\]\\^-] | in einer Menge brauchen nur ] \ ^ - ein Escape |
| \t \n \r \xHH \uHHHH | Tab, Zeilenumbruch, CR, Hex, Unicode |
| \p{L} \p{Lu} \p{N} \p{Script=Cyrillic} | Unicode-Eigenschaften (u-Flag in JS) |
| [[:alpha:]] [[:digit:]] | POSIX-Klassen (grep, PCRE; nicht JS) |
| \. \* \( \\ | maskiertes Metazeichen = Literal |
| * + ? | 0+, 1+, 0 oder 1 |
| {n} {n,} {n,m} | genau, mindestens, zwischen |
| *? +? ?? {n,m}? | faul: so wenig wie möglich |
| *+ ++ ?+ | possessiv: kein Backtracking (PCRE, Java) |
| (abc) | Capture, ab 1 nummeriert |
| (?:abc) | ohne Capture |
| (?<name>abc) | benannt (Python: (?P<name>…)) |
| \1 \k<name> | Rückverweis (Python: (?P=name)) |
| a|b | Alternative (niedrigster Vorrang) |
| (?>abc) | atomare Gruppe (PCRE, Java) |
| (?i)abc (?i:abc) | Inline-Flag, Inline-Flag mit Geltungsbereich |
| (?=x) | gefolgt von x |
| (?!x) | nicht gefolgt von x |
| (?<=x) | mit x davor |
| (?<!x) | ohne x davor |
| g | alle Treffer (JS, PHP über Funktion) |
| i | Groß-/Kleinschreibung ignorieren |
| m | ^ $ passen an Zeilenumbrüchen |
| s | . passt auf Zeilenumbruch (DOTALL) |
| x | Leerraum und #-Kommentare im Muster ignorieren (PCRE, Python; nicht JS) |
| u | Unicode (JS); nötig für \p{} |
| y | sticky (JS) |
| $1 $<name> $& | JS, .NET: Gruppe, benannt, ganzer Treffer |
| \1 \g<name> | Python re.sub |
| $1 \1 ${name} | PCRE / PHP preg_replace; Go nutzt $1 und ${name} |
| sed 's/(a)(b)/\2\1/' | sed -E (einfaches sed braucht \( \)) |
| ^\s*$ | Leerzeile |
| \s+$ | Leerraum am Zeilenende |
| \b(?:\d{1,3}\.){3}\d{1,3}\b | IPv4 (grob) |
| [\w.+-]+@[\w-]+(?:\.[\w-]+)+ | E-Mail (praktisch) |
| https?://[^\s"'<>]+ | URL |
| \d{4}-\d{2}-\d{2} | ISO-Datum |
| #(?:[0-9a-fA-F]{3}){1,2}\b | Hex-Farbe |
| "(?:[^"\\]|\\.)*" | String in doppelten Anführungszeichen mit Escapes |
| ^(?=.*\d)(?=.*[a-z])(?=.*[A-Z]).{8,}$ | Passwort mit Ziffer, Klein-, Großbuchstabe, 8+ |
| (\w+)\s+\1 | wiederholtes Wort |
| JavaScript | kein \A \z, kein x-Flag, nicht possessiv/atomar; Lookbehind ja; benannte Gruppen (?<n>) |
| PCRE (PHP, nginx, HAProxy) | alles; Begrenzer /…/ in PHP |
| Python re | (?P<n>), nicht possessiv vor 3.11, \Z = Ende |
| Go RE2, Rust regex | lineare Zeit; kein Lookaround, keine Rückverweise |
| grep -E / sed -E | ERE: kein \d ([0-9] nutzen), POSIX-Klassen, keine faulen Quantoren |
| grep (basic) | \( \) \{ \} \+ \? maskiert, um besonders zu sein |
| Java | possessiv, atomar; Strings brauchen doppelte Backslashes |
Die Ergebnisse und Meldungen dieses Tools werden auf Englisch angezeigt.
Der Regex-Tester hebt Treffer live hervor, listet Gruppen, zeigt eine Ersetzungsvorschau und erklärt das Muster Token für Token.