Regex-Tester

Teste einen regulären Ausdruck an deinem eigenen Text: alle Treffer und Erfassungsgruppen werden hervorgehoben, jeder Bestandteil des Ausdrucks wird erklärt, und du siehst, was JavaScript, PCRE und RE2 tatsächlich unterstützen. Alles läuft in deinem Browser.

Auch als Desktop-App für Windows verfügbar.

Über dieses Tool

Ein regulärer Ausdruck ist eine kleine Sprache zur Beschreibung von Textmustern, und fast jedes Werkzeug, das mit Text umgeht, spricht sie — Suchfelder, Logfilter, Code-Editoren, Datenbankabfragen. Sie ist zugleich dafür berüchtigt, dass man leicht etwas schreibt, das richtig aussieht und auf das Falsche passt. Die Lösung ist nicht, länger nachzudenken, sondern den Ausdruck an Text laufen zu lassen, dessen Ergebnis man bereits kennt.

Diese Seite bündelt das an einer Stelle. Muster eingeben, Flags wählen, Text einfügen — jeder Treffer wird an Ort und Stelle hervorgehoben, und jede Erfassungsgruppe steht darunter mit ihrer Position. Darunter wird der Ausdruck in seine einzelnen Bestandteile zerlegt und jeder in klaren Worten erklärt — so wird sichtbar, was \b, (?<=…) und ein lazy-Quantifizierer tatsächlich tun, ohne in einer Übersicht nachzuschlagen.

Der dritte Abschnitt behandelt etwas, das die meisten Tester ignorieren: Derselbe Ausdruck verhält sich nicht in jeder Engine gleich. Ein Regex, der im Browser einwandfrei läuft, kann vom RE2 auf einem Server abgelehnt werden oder sich still anders verhalten. Die Vergleichstabelle listet genau die Merkmale, bei denen die Engines auseinandergehen, damit ein lokal funktionierender Ausdruck in der Produktion keine Überraschung wird.

Alles wird auf deinem Gerät berechnet. Es gibt keinen Upload und keinen Server, der den Abgleich übernimmt — das ist wichtig, wenn der getestete Text ein Kundendatensatz oder eine Zeile aus einem Produktionslog ist.

Häufige Fragen

Warum wird mein Ausdruck nicht fertig?
Manche Muster backtracken explosionsartig. (a+)+$ auf einer langen Folge von a ist das klassische Beispiel: Jedes zusätzliche Zeichen verdoppelt den Aufwand ungefähr, bei vierzig Zeichen sind das bereits Billionen Schritte. Dieser Tester führt das Muster in einem eigenen Worker aus und stoppt es nach kurzer Zeit, damit die Seite benutzbar bleibt. Erscheint diese Meldung, liegt das Problem im Muster selbst — meist verschachtelte Quantifizierer oder zwei Quantifizierer, die denselben Text treffen können.
Was ist der Unterschied zwischen greedy und lazy?
Ein Quantifizierer ist standardmäßig greedy: Er nimmt so viel wie möglich und gibt dann Zeichen zurück, bis der Rest des Musters passt. Ein angehängtes ? macht ihn lazy — er nimmt so wenig wie möglich und wächst nur, wenn es sein muss. Auf <b>bold</b> passt <.+> auf die ganze Zeichenkette, <.+?> nur auf <b>. Beides ist richtig; die beiden beantworten unterschiedliche Fragen.
Passt \w auf Umlaute oder chinesische Zeichen?
In JavaScript nicht — ohne das Flag u bedeutet \w genau die ASCII-Buchstaben, Ziffern und den Unterstrich. Chinesisch, Kyrillisch, lateinische Buchstaben mit Akzent und Emoji liegen alle außerhalb. Wenn jedes Zeichen jeder Schrift als Wortzeichen gelten soll, nimm \p{L} mit dem Flag u oder zähle die Bereiche auf, die du wirklich brauchst.
Wofür sind Lookahead und Lookbehind da?
Sie verlangen etwas, ohne es zu verbrauchen. \d+(?= dollars) passt in „250 dollars“ auf die Zahl 250, nicht auf das Wort dollars — der Treffer ist allein 250. Lookbehind schaut rückwärts: (?<=\$)\d+ nimmt die Zahl nach dem Dollarzeichen, ohne das Zeichen selbst einzuschließen. Das ist die übliche Art, „nur wenn es davon umgeben ist“ auszudrücken — und genau das, was RE2 nicht kann.
Warum bekomme ich nur einen Treffer?
Weil das Flag g aus ist. Ohne g hält ein regulärer Ausdruck beim ersten Treffer an — das ist die Voreinstellung in JavaScript und in den meisten Sprachen. Mit g sucht er weiter. Wenn du von einem Suchfeld kommst, das alles ausgegeben hat, dann hat dieses Feld g für dich gesetzt.
Wird mein eingefügter Text an einen Server geschickt?
Nein. Der Abgleich geschieht in deinem Browser, in einem Worker-Thread auf deinem eigenen Rechner. Nichts, was du eingibst, wird übertragen oder protokolliert. Das ist Absicht: Produktionslogzeilen und Kundendaten sind das, woran Menschen Regexe am häufigsten testen, und beides gehört nicht auf einen fremden Server.
Was macht das Sticky-Flag y?
Es verankert jeden Treffer an genau der Position, an der der vorige endete, statt von dort aus weiterzusuchen. Damit kann man eine Zeichenkette Stück für Stück durchlaufen und erfährt sofort, wenn das Muster nicht mehr passt. PCRE kennt dieselbe Idee unter dem Namen \G — deshalb stehen sie in der Tabelle zusammen.

Verwandte Tools