Regex-Syntaxreferenz

Durchsuchen Sie die vierzig Zeilen nach Syntax, Bedeutung oder Beispiel oder lesen Sie die Tabelle der Reihe nach. Die Hinweise zeigen, wo JavaScript, PCRE, Python, Java, .NET, Go und Ruby auseinandergehen.

Läuft lokal in deinem Browser
SyntaxBedeutungBeispiel
\Maskiert ein Metazeichen oder leitet eine spezielle Sequenz ein.\. entspricht einem wörtlichen Punkt.
^Entspricht dem Anfang der Eingabe oder im Mehrzeilenmodus dem Anfang einer Zeile.^Error
$Entspricht dem Ende der Eingabe oder im Mehrzeilenmodus dem Ende einer Zeile.done$
i, m, s, u, xFlags hinter dem schließenden Begrenzer: i ignoriert Groß- und Kleinschreibung, m lässt ^ und $ an Zeilenumbrüchen greifen, s lässt . auch Zeilenumbrüche treffen, u schaltet JavaScript in den Unicode-Modus, und x ignoriert nicht maskierte Leerzeichen und #-Kommentare in PCRE, Python, Java und Ruby./^done$/im
.Erfasst ein Zeichen; Zeilenumbrüche sind ausgeschlossen, sofern der Dot-all-Modus nicht aktiv ist.a.c
*Wiederholt das vorherige Token nullmal oder öfter.ab*c
+Wiederholt das vorherige Token einmal oder öfter.ab+c
?Macht das vorherige Token optional.colou?r
{n}Wiederholt das vorherige Token genau n-mal.\d{4}
{n,}Wiederholt das vorherige Token mindestens n-mal.\w{3,}
{n,m}Wiederholt das vorherige Token zwischen n- und m-mal.[A-F0-9]{2,8}
*?, +?, ??Verwendet eine nicht-gierige Wiederholung und verbraucht möglichst wenig Eingabe.<.*?>
*+, ++, ?+Possessive Quantoren: Sie greifen gierig und geben keine Zeichen zurück, sodass die Engine nicht in sie zurücklaufen kann. PCRE, Perl, Java und Python 3.11 oder neuer unterstützen sie; JavaScript, Go und ältere Python-Versionen nicht.\d++
(?>pattern)Atomare Gruppe: Die Gruppe behält ihren ersten Treffer und wird beim Backtracking nicht erneut betreten. PCRE, .NET, Java, Perl und Python 3.11 oder neuer unterstützen sie; JavaScript kennt keine atomaren Gruppen.(?>a|ab)c
[abc]Erfasst ein Zeichen aus der Menge.gr[ae]y
[^abc]Erfasst ein Zeichen, das nicht in der Menge enthalten ist.[^0-9]
[a-z]Erfasst ein Zeichen aus dem angegebenen Bereich.[A-Za-z]
[[:alpha:]]POSIX-Zeichenklasse innerhalb einer Zeichenklasse; unterstützt von PCRE, Java, Ruby und grep-artigen Engines, aber nicht von JavaScript oder Python, wo die Unicode-Eigenschaft die portable Schreibweise ist.[[:digit:]]+
x|yErfasst den Ausdruck links oder den Ausdruck rechts.cat|dog
(pattern)Gruppiert einen Teilausdruck und speichert den Treffer.(ab)+
(?:pattern)Gruppiert einen Teilausdruck, ohne einen Capture zu erzeugen.(?:https?)://
(?<name>pattern)Erzeugt eine benannte Capture-Gruppe, sofern die Engine sie unterstützt.(?<year>\d{4})
(?P<name>pattern)Schreibweise für benannte Gruppen in Python und in Googles RE2-Engine, die keinen Rückverweis auf die Gruppe akzeptiert.(?P<year>\d{4})
(?'name'pattern)Alternative Schreibweise für benannte Gruppen in .NET, PCRE, Perl und Ruby; Java und JavaScript akzeptieren nur die Form mit spitzen Klammern.(?'year'\d{4})
\1Erfasst denselben Text, den die erste Gruppe gespeichert hat.\b(\w+)\s+\1\b
\k<name>Rückverweis auf eine benannte Gruppe in JavaScript, .NET, PCRE, Java und Ruby; Python schreibt stattdessen die P=-Form.(?<w>\w+)\s+\k<w>
(?=pattern)Positiver Lookahead: verlangt einen folgenden Treffer, ohne ihn zu verbrauchen.\d+(?=px)
(?!pattern)Negativer Lookahead: verlangt, dass der folgende Text nicht passt.foo(?!bar)
(?<=pattern)Positiver Lookbehind: verlangt einen vorhergehenden Treffer, ohne ihn zu verbrauchen.(?<=\$)\d+
(?<!pattern)Negativer Lookbehind: verlangt, dass der vorhergehende Text nicht passt.(?<!-)\b\d+
\A, \z, \ZAnker für den absoluten Anfang oder das absolute Ende der Zeichenkette in PCRE, Python, Java und Ruby; dort erlaubt die Ende-Form zusätzlich einen abschließenden Zeilenumbruch. JavaScript hat kein Gegenstück, verwenden Sie dort ^ und $ ohne das Flag m.\A\d{4}\z
\d / \DErfasst eine Ziffer / ein Zeichen, das keine Ziffer ist. Das Unicode-Verhalten hängt von der Engine ab.\d+
\w / \WErfasst ein Wortzeichen / Nicht-Wortzeichen. Der genaue Zeichensatz hängt von der Engine ab.\w+
\s / \SErfasst Leerraum / ein Zeichen, das kein Leerraum ist.\s+
\b / \BErfasst eine Wortgrenze / eine Position, die keine Wortgrenze ist.\bword\b
\n, \r, \tErfasst einen Zeilenvorschub, Wagenrücklauf oder Tabulator.\r?\n
\xNNErfasst ein Zeichen über seine zweistellige hexadezimale Codeeinheit.\x41 entspricht A.
\uNNNNErfasst ein Zeichen über eine vierstellige Unicode-Codeeinheit in Engines, die diese Schreibweise unterstützen.\u00A9 entspricht ©.
\u{1F600}, \x{1F600}Trifft ein Codepunkt oberhalb von U+FFFF: JavaScript schreibt \u{...} mit dem Flag u, während PCRE, Perl und Java \x{...} schreiben und Python \U0001F600.\u{1F600}
\p{Letter}Erfasst eine Unicode-Eigenschaft, wenn Unicode-Property-Escapes unterstützt und aktiviert sind.\p{Letter}+

So schlagen Sie ein Regex-Konstrukt nach

Vierzig Konstrukte in drei Spalten: die Syntax, die Sie schreiben, ihre Bedeutung und ein kurzes Beispiel. Die Zeilen decken die Escapes, Anker, Quantifizierer, Zeichenklassen, Gruppen, Assertions, Flags und Unicode-Escapes ab, die JavaScript, PCRE, Python, Java, .NET, Go und Ruby gemeinsam haben, und nennen die Engines, die eine erweiterte Form ablehnen.

Die Seite führt kein Muster aus: Hier wird nichts kompiliert und nichts verglichen. Die Tabelle gehört zur Seite, das Suchfeld blendet nur Zeilen im Browser aus, und Ihre Eingabe wird nirgendwohin gesendet.

  1. Tippen Sie in das Suchfeld über der Tabelle, um nach Syntax, Bedeutung oder Beispiel zu filtern: lookbehind lässt die beiden Lookbehind-Zeilen stehen, \d die zehn Zeilen, die es erwähnen, und Leeren holt alle vierzig zurück.
  2. Die Suche liest reinen Text und kein Muster und ignoriert Groß- und Kleinschreibung: lookbehind, Lookbehind und LOOKBEHIND liefern dieselben Zeilen. Passt nichts, erscheint der Hinweis auf eine leere Liste statt einer leeren Tabelle.
  3. Lesen Sie die Zeile von links nach rechts: Spalte eins ist das, was Sie in ein Muster schreiben, Spalte zwei sagt, was es bewirkt, Spalte drei zeigt ein kurzes Beispiel.
  4. Drücken Sie die Kopierschaltfläche in der ersten Zelle, um genau dieses Syntax-Token in die Zwischenablage zu legen — kopiert wird nur das Token, etwa *+, ++, ?+.
  5. Prüfen Sie vor erweiterten Konstrukten den Engine-Hinweis: Die Zeilen zu possessiven Quantifizierern, atomaren Gruppen, POSIX-Klassen, \A \z \Z, benannten Gruppen und \u{...} nennen die Engines, die sie akzeptieren.

Was die Tabelle abdeckt

Was die vierzig Zeilen abdecken

Escapes (\d, \w, \b, \xNN, \uNNNN, \p{Letter}), Anker (^, $, \A, \z, \Z), gierige, lazy und possessive Quantifizierer, Zeichenklassen und POSIX-Klassen, erfassende und nicht erfassende Gruppen, drei Schreibweisen benannter Gruppen, Rückverweise, Lookahead und Lookbehind, Inline-Flags und Codepoint-Escapes oberhalb von U+FFFF.

Die Beispielspalte zeigt Fragmente statt vollständiger Programme: \d++ und (?>a|ab)c stellen das Konstrukt in den Zusammenhang, und die drei Zeilen, die als Satz enden — \. entspricht einem wörtlichen Punkt., \x41 entspricht A., \u00A9 entspricht ©. — lesen sich wie beim Testen eines Musters.

Wo die Engines abweichen

Die RE2-Engine von Go lässt Lookaround und Rückverweise weg; JavaScript kennt keine atomaren Gruppen und keine possessiven Quantifizierer und braucht das Flag u für \u{...}-Escapes; eine POSIX-Klasse wie [[:alpha:]] funktioniert in PCRE, Java, Ruby und grep-artigen Engines, aber nicht in JavaScript oder Python.

Python 3.11 und neuer akzeptieren atomare Gruppen und possessive Quantifizierer, die PCRE, Perl und Java schon früher hatten. Benannte Gruppen schreibt man (?P<name>...) in Python und RE2 sowie (?'name'...) in .NET, PCRE, Perl und Ruby; der benannte Rückverweis ist \k<name>, außer in Python, wo (?P=name) steht.

Was die Seite nicht tut

Sie ist eine Nachschlagetabelle und kein Tester: kein Muster wird kompiliert, nichts mit Ihrem Text abgeglichen und kein Code erzeugt. Die Registerkarten oben tragen den Rest der Familie — Regex Tester führt ein Muster aus, Regex Code Generator schreibt es für sieben Sprachen, Common Regex Patterns sammelt fertige Muster.

Die Tabelle ist reines HTML und bleibt auch ohne JavaScript lesbar; nur Filter, Zeilenzähler und Kopierschaltflächen brauchen das Skript. Die Suche vergleicht den Text der Seite, eine Abfrage wie \d+ wird also als die drei enthaltenen Zeichen gelesen und nicht als Muster.

Zuletzt verwendet: