Regex-Spickzettel
Reguläre Ausdrücke sind so kompakt, dass sich die Syntax leichter nachschlagen als merken lässt. Diese Seite zeigt alles auf einem Bildschirm – Klassen, Quantoren, Anker, Gruppen, Lookaround, Escape und die Flags – mit einem funktionierenden Beispiel für jede Zeile.
Die Variante ist JavaScript, das in Ihrem Browser ausgeführt wird und vom Regex-Tester auf dieser Website verwendet wird. Das meiste davon ist in Python, Java, Go und PCRE identisch; Wo Geschmacksrichtungen voneinander abweichen, weichen sie an den Rändern voneinander ab – Lookbehind-Unterstützung, benannte Gruppensyntax und ob \d „ASCII-Ziffer“ oder „beliebige Unicode-Ziffer“ bedeutet.
Zwei Dinge sind für die meisten Überraschungen verantwortlich. Quantifizierer sind gierig: Sie nehmen alles, was sie können, und geben es erst zurück, wenn der Rest des Musters fehlschlägt, weshalb <.+> zwei Tags verschluckt und <.+?> nicht. Und Alternation bindet am lockersten, daher bedeutet ^a|b$ „beginnt mit a oder endet mit b“ – was die meisten Leute nicht beabsichtigen, wenn sie es schreiben.
Charakterklassen
Die Abkürzungen sind nur ASCII, es sei denn, Sie fügen das u-Flag hinzu und verwenden Unicode-Eigenschafts-Escapezeichen.
| Syntax | Bedeutung | Beispiel |
|---|---|---|
| . | Beliebiges Zeichen außer einem ZeilenumbruchFügen Sie das Flag s hinzu, damit es auch mit Zeilenumbrüchen übereinstimmt. | /a.c/"abc" → "abc" |
| \d | Eine Ziffer, 0–9 | /\d+/"order 42" → "42" |
| \D | Alles, was keine Ziffer ist | /\D+/"42abc" → "abc" |
| \w | Buchstabe, Ziffer oder UnterstrichNur ASCII – „é“ ist nicht \w. | /\w+/"user_1!" → "user_1" |
| \W | Alles, was mit \w nicht übereinstimmt | /\W+/"a++b" → "++" |
| \s | Alle Leerzeichen, einschließlich Tabulatoren und Zeilenumbrüche | /\s+/"a \t b" → " \t " |
| \S | Jedes Zeichen, das kein Leerzeichen ist | /\S+/" hi" → "hi" |
| [abc] | Einer der aufgeführten Charaktere | /[aeiou]/"rhythm and" → "a" |
| [^abc] | Alle Zeichen außer den aufgeführten | /[^aeiou ]+/"aeiou xyz" → "xyz" |
| [a-z] | Eine Reihe von Charakteren | /[a-f]+/"zzabcz" → "abc" |
| \p{L} | Jeder Unicode-Buchstabe (erfordert die u-Flagge) | /\p{L}+/"42 café" → "café" |
Quantifizierer
Sie alle sind standardmäßig gierig: Sie nehmen so viel wie sie können und geben nur dann etwas zurück, wenn der Rest des Musters fehlschlägt.
| Syntax | Bedeutung | Beispiel |
|---|---|---|
| * | Null oder mehr | /ab*/"a" → "a" |
| + | Einer oder mehrere | /ab+/"abbb" → "abbb" |
| ? | Null oder Eins – macht es optional | /colou?r/"color" → "color" |
| {3} | Genau drei | /\d{3}/"id 12345" → "123" |
| {2,} | Zwei oder mehr | /a{2,}/"aaa" → "aaa" |
| {2,4} | Zwischen zwei und vier | /a{2,4}/"aaaaa" → "aaaa" |
| *? | Faul – braucht so wenig wie möglichDas gierige <.+> würde beide Tags verschlucken. | /<.+?>/"<a><b>" → "<a>" |
Anker und Grenzen
Diese stimmen mit einer Position und nicht mit einem Zeichen überein und verbrauchen daher nichts.
| Syntax | Bedeutung | Beispiel |
|---|---|---|
| ^ | Beginn der Zeichenfolge oder einer Zeile mit dem m-Flag | /^a/"abc" → "a" |
| $ | Ende der Zeichenfolge oder einer Zeile mit dem m-Flag | /c$/"abc" → "c" |
| \b | Eine WortgrenzeDies ist es, was verhindert, dass „cat“ in „concatenate“ passt. | /\bcat\b/"the cat sat" → "cat" |
| \B | Keine Wortgrenze | /\Bcat/"concatenate" → "cat" |
Gruppen und Abwechslung
| Syntax | Bedeutung | Beispiel |
|---|---|---|
| (abc) | Erfassende Gruppe – zum Ersetzen gespeichert | /(\d+)-(\d+)/"10-20" → "10-20" |
| (?:abc) | Gruppieren ohne ErfassenVerwenden Sie dies, wenn Sie nur die Gruppierung benötigen; Dadurch bleiben die Erfassungszahlen aussagekräftig. | /(?:ab)+/"abab" → "abab" |
| (?<name>…) | Benannte Erfassungsgruppe | /(?<year>\d{4})/"in 2026" → "2026" |
| a|b | Auf beiden Seiten – WechselDer Wechsel hat die niedrigste Priorität: ^a|b$ ist „^a“ oder „b$“, nicht „^(a|b)$“. | /cat|dog/"one dog" → "dog" |
| \1 | Rückverweis auf die erste Gruppe | /(\w)\1/"letter" → "tt" |
Schauen Sie sich um
Aussagen darüber, was eine Position umgibt. Sie passen selbst nicht zusammen und sind daher sicher zu kombinieren.
| Syntax | Bedeutung | Beispiel |
|---|---|---|
| (?=…) | Lookahead – gefolgt von diesem | /\d+(?= kg)/"80 kg" → "80" |
| (?!…) | Negativer Ausblick – davon folgt nichts | /\d+(?! kg)/"80 lb" → "80" |
| (?<=…) | Lookbehind – davor | /(?<=\$)\d+/"costs $40" → "40" |
| (?<!…) | Negativer Rückblick – das geht nicht voraus | /(?<!\$)\b\d+/"about 40" → "40" |
Flucht
Diese zwölf Zeichen benötigen einen Backslash, um wörtlich genommen zu werden.
| Syntax | Bedeutung | Beispiel |
|---|---|---|
| \. | Ein buchstäblicher Punkt | /\d\.\d/"v2.5" → "2.5" |
| \\ | Ein buchstäblicher Backslash | /\\/"C:\\dir" → "\\" |
| \n | Ein Zeilenvorschub | /a\nb/"a\nb" → "a\nb" |
| \t | Eine Registerkarte | /a\tb/"a\tb" → "a\tb" |
| \uFFFF | Ein Zeichen nach seinem Codepunkt | /\u00e9/"café" → "é" |
Flaggen
| Flagge | Name | Bedeutung |
|---|---|---|
| g | Global | Finden Sie jede Übereinstimmung, nicht nur die erste. |
| i | Groß-/Kleinschreibung ignorieren | Übereinstimmung unabhängig von Groß- oder Kleinschreibung. |
| m | Mehrzeilig | Sorgt dafür, dass ^ und $ bei jedem Zeilenumbruch übereinstimmen und nicht nur am Ende der Zeichenfolge. |
| s | Alles punktieren | Lass uns. Match-Zeilenumbrüche auch. |
| u | Unicode | Behandelt das Muster als Codepunkte und ermöglicht \p{…}-Eigenschafts-Escapes. |
| y | Klebrig | Entspricht nur genau lastIndex, es wird nie vorwärts gesucht. |