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| Syntax | Bedeutung | Beispiel |
|---|---|---|
\ | 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, x | Flags 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|y | Erfasst 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}) |
\1 | Erfasst 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, \Z | Anker 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 / \D | Erfasst eine Ziffer / ein Zeichen, das keine Ziffer ist. Das Unicode-Verhalten hängt von der Engine ab. | \d+ |
\w / \W | Erfasst ein Wortzeichen / Nicht-Wortzeichen. Der genaue Zeichensatz hängt von der Engine ab. | \w+ |
\s / \S | Erfasst Leerraum / ein Zeichen, das kein Leerraum ist. | \s+ |
\b / \B | Erfasst eine Wortgrenze / eine Position, die keine Wortgrenze ist. | \bword\b |
\n, \r, \t | Erfasst einen Zeilenvorschub, Wagenrücklauf oder Tabulator. | \r?\n |
\xNN | Erfasst ein Zeichen über seine zweistellige hexadezimale Codeeinheit. | \x41 entspricht A. |
\uNNNN | Erfasst 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}+ |
Die RE2-basierte Engine von Go verzichtet bewusst auf Lookaround und Rückverweise. JavaScript benötigt für viele Unicode-Property-Escapes den Unicode-Modus. PCRE, .NET, Java, Python und Ruby unterscheiden sich außerdem bei Gruppensyntax, Flags und Ersetzungsregeln.
Wenn ein Muster nicht vertrauenswürdige oder sehr große Eingaben verarbeitet, vermeide mehrdeutige verschachtelte Quantifizierer, begrenze die Eingabe und teste den ungünstigsten Fall, um übermäßiges Backtracking zu vermeiden.
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.
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.
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.
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.