Online-Regex-Tester, Debugger und Erklärer
Reguläre Ausdrücke bauen, testen und debuggen — mit echtem Syntaxbaum, Positionen jeder Erfassungsgruppe, Warnungen vor katastrophalem Backtracking und Code-Export in zehn Sprachen, alles in deinem Tab.
- Innerhalb von [ ] ist der Punkt schon wörtlich, ihn zu escapen ist überflüssig.
Klicke eine Hervorhebung an, um diesen Treffer auszuwählen. Alt gedrückt halten zeigt den rohen Text; F3 und Umschalt+F3 springen durch die Treffer.
Keine Treffer
Das Muster ist gültig, es kommt in diesem Text nur nicht vor. Prüf die Flags: ohne g wird nur der erste Treffer gemeldet.
[\w.%+-]+Wiederholt ein Mal oder öfter — gierig: nimmt so viel wie möglich und gibt nur zurück, wenn es sein muss[\w.%+-]Ein beliebiges Zeichen aus: \w . % + -
@Das Zeichen „@“[\w.-]+Wiederholt ein Mal oder öfter — gierig: nimmt so viel wie möglich und gibt nur zurück, wenn es sein muss[\w.-]Ein beliebiges Zeichen aus: \w . -
\.Das Zeichen „.“, wörtlich genommen[A-Za-z]{2,}Wiederholt mindestens 2 Mal — gierig: nimmt so viel wie möglich und gibt nur zurück, wenn es sein muss[A-Za-z]Ein beliebiges Zeichen aus: A–Z a–z
So funktioniert es
Schreib das Muster
Tipp es ein, nimm eins aus der Bibliothek oder füg einen geteilten Link ein. Das Muster wird danach eingefärbt, was jedes Stück wirklich ist, und Fehler werden genau dort unterstrichen, wo sie passieren.
Flags und Modus einstellen
Schalte g, i, m, s, u, v, y und d um und wähl dann, ob du suchst, ersetzt oder teilst. Schalte den Live-Modus aus, wenn dir lieber ist, dass nichts läuft, bis du den Knopf drückst.
Sicher ausführen
Die Suche passiert in einem Web Worker mit Zwei-Sekunden-Limit. Jeder Treffer kommt mit Positionen und Erfassungsgruppen zurück, und das Panel warnt dich vor einem Muster, das ewig zurücksetzen könnte.
Nimm es mit
Kopier die Regex, exportier die Treffer als JSON oder CSV, generier den passenden Code für zehn Sprachen oder schick das Ergebnis direkt an ein anderes oLoveTools-Werkzeug.
Ein Parser, kein Tokenizer
Das Muster wird in einen echten Syntaxbaum zerlegt, die Erklärung zeigt also, was worin steckt — und liegt bei benannten Gruppen richtig. Ein Tokenizer liest (?<year>\d{4}) als Erfassungsgruppe gefolgt von einem optionalen Etwas; ein Parser liest die benannte Gruppe, die es ist.
Die Engine läuft dort, wo man sie töten kann
Die Suche passiert in einem Web Worker mit Wachhund. Hier gemessen: (a+)+$ gegen 31 Zeichen braucht über vier Minuten reine CPU-Zeit auf derselben Engine, die dein Browser benutzt. Auf der Seite ist das ein toter Tab; in einem Worker ist es ein Durchlauf, der nach zwei Sekunden beendet wird.
Treffer mit echten Positionen
Das d-Flag wird im Hintergrund gesetzt, jede Erfassungsgruppe trägt also, wo sie anfängt und endet, nicht nur, was sie gefangen hat. Genau das malt die Gruppen innerhalb eines hervorgehobenen Treffers und lässt dich von der Liste zu den exakten Zeichen springen.
Es warnt, bevor du dich verbrennst
Verschachtelte Quantoren über überlappende Zeichen, Quantoren um etwas, das nichts verbrauchen kann, Rückverweise auf Gruppen, die es nicht gibt, \p{…} ohne das u-Flag und Lookbehind auf einem zu alten Browser — alles markiert, bevor irgendetwas läuft.
Export in zehn Sprachen
JavaScript, TypeScript, Python, Java, C#, PHP, Go, Rust, Ruby und grep/sed, mit korrekt übersetzten Flags und der Ersetzung in der jeweils eigenen Syntax. Die Go- und Rust-Snippets sagen es, wenn das Muster etwas benutzt, das RE2 nicht kann.
An den Rest der Suite gekettet
Schick den ersetzten Text, die geteilten Stücke oder die Treffer als JSON direkt an WordFlow, DiffSnap, JSONFlow, CodeCard oder HashBolt — ohne Umweg über deinen Download-Ordner.
Ein Regex-Tester, der deinen Browser nicht aufhängen kann
Reguläre Ausdrücke sind das Einzige, was ein Tester ausführen muss, bevor sie korrekt sind, und ein falscher kann pathologisch sein: ein Muster wie (a+)+$ gegen eine Zeichenkette, die fast passt, braucht exponentielle Zeit, und die Engine des Browsers lässt sich nicht unterbrechen. RegexFlow führt jede Suche in einem Web Worker mit einem Zwei-Sekunden-Wachhund aus. Läuft ein Durchlauf über, wird der Worker beendet und ersetzt, und du bekommst eine Meldung statt eines eingefrorenen Tabs mit deinem Muster darin.
Nichts verlässt den Tab
Das Muster, der Testtext, die Ersetzung und jede Datei, die du öffnest, werden vollständig in deinem Browser verarbeitet — kein Upload, kein Serverweg. Dateien werden mit dem browsereigenen FileReader gelesen. Das Einzige, was hinausgehen kann, ist ein Teilen-Link, und auch nur, wenn du den Knopf drückst, der ihn baut.
Vom funktionierenden Muster zum funktionierenden Code
Log-Parsing, das eine kaputte Zeile überleben muss, Validierung, die ebenso ablehnen wie annehmen muss, ein Suchen-und-Ersetzen über eine ganze Codebasis, bei dem $1 an der richtigen Stelle landen muss, und der Moment, in dem du das vierzig Zeichen lange Muster von jemand anderem erbst und wissen musst, was es tut, bevor du es anfasst. Der Erklärbaum, die Positionen und die Gruppentabelle sind für genau diesen Moment.
Die Suche benutzt das RegExp deines eigenen Browsers, was du siehst, ist also genau das, was dein JavaScript tun wird — einschließlich der Teile, die sich unterscheiden. Deshalb prüft das Werkzeug die Unterstützung für Lookbehind und unicodeSets, statt sie vorauszusetzen. Beim Export nach Python, Go oder Rust werden die Unterschiede benannt, statt still ein Snippet zu erzeugen, das nicht kompiliert.
Häufige Fragen
QWerden mein Muster oder mein Testtext irgendwohin geschickt?
Nein. Alles läuft in JavaScript in deinem Tab, auch die Dateien, die du öffnest: sie werden mit dem FileReader des Browsers gelesen und nie hochgeladen. Du kannst die Internetverbindung trennen, das Werkzeug funktioniert weiter.
QWas passiert, wenn ich ein Muster schreibe, das nie fertig wird?
Es wird beendet. Die Suche läuft in einem Web Worker mit Zwei-Sekunden-Wachhund; antwortet der Worker nicht rechtzeitig, wird er terminiert und ein frischer nimmt seinen Platz ein. Das zählt mehr, als es klingt: gemessen auf derselben Engine, die dein Browser benutzt, lief (a+)+$ gegen 31 Zeichen über vier Minuten. Auf dem Haupt-Thread ist das ein Tab, den du nicht zurückbekommst.
QWelche Regex-Engine wird benutzt?
Das native RegExp deines Browsers, was du testest, ist also genau das, was dein JavaScript tun wird. Wo die Unterstützung schwankt, prüft das Werkzeug nach, statt zu raten: Lookbehind (Safari hat es erst in 16.4 nachgereicht), das v-Flag für unicodeSets und das d-Flag für die Positionen der Gruppen. Fehlt eines, wird es dir gesagt, statt dir einen verwirrenden Fehler zu zeigen.
QWarum ist die Musteranalyse ein Baum?
Weil eine flache Liste nicht sagen kann, was worin steckt, und weil ein Tokenizer dort falschliegt, wo ein Parser richtigliegt: (?<year>\d{4}) ist eine benannte Gruppe, keine Erfassungsgruppe gefolgt von einem optionalen Zeichen. Jede Zeile ist mit genau den Zeichen verknüpft, die sie beschreibt, beim Überfahren werden sie im Muster hervorgehoben.
QUnterstützt die Ersetzung $1 und benannte Gruppen?
Ja: $1 bis $99, $<name>, $& für den ganzen Treffer, $` und $' für den Text drumherum und $$ für ein wörtliches Dollarzeichen. Jedes Token, das du tippst, steht darunter mit dem, was daraus wird, und der erzeugte Code schreibt sie in die Syntax der jeweiligen Zielsprache um — \g<name> für Python, ${name} für Java und C#.
QKann ich es mit einer großen Datei benutzen?
Ja, aber ab 40.000 Zeichen wertet das Werkzeug nicht mehr von selbst neu aus und wartet darauf, dass du auf Ausführen drückst — eine große Datei bei jedem Tastendruck zu durchsuchen ist verschwendete Arbeit. Du kannst den Live-Modus auch bei jeder Größe ausschalten und ganz manuell bleiben.
QWarum kommt der erzeugte Go-Code mit einer Warnung?
Go und Rust benutzen RE2, das von Bauart her lineare Laufzeit hat und deshalb weder Lookahead noch Lookbehind noch Rückverweise kennt. Benutzt dein Muster eines davon, wird das Snippet trotzdem gezeigt, aber mit dem Hinweis, dass es so nicht kompiliert — was nützlicher ist als ein Snippet, das still scheitert.
QWas bedeuten die Farben im Testtext?
Jeder Treffer ist fuchsia umrandet, der ausgewählte heller. Innerhalb des ausgewählten bekommen die Erfassungsgruppen eigene violette Bereiche, du siehst also genau, welche Zeichen in $1 gelandet sind. Halte Alt gedrückt, um alle Hervorhebungen auszublenden und den Text so zu lesen, wie er wirklich ist.