Regex-Tester
Testen Sie einen regulären Ausdruck live, wenn Sie in Integrationen Daten extrahieren oder prüfen. Muster und Text verlassen Ihr Gerät nicht; das Muster läuft in einem eigenen Thread, sodass ein Muster mit katastrophalem Backtracking die Seite nicht einfriert, sondern nach einer Sekunde gestoppt wird.
Nur das Muster, ohne Schrägstriche (/…/). JavaScript-Syntax (ECMAScript).
Verweisen Sie mit $1 oder $<name> auf Gruppen und mit $& auf den gesamten Treffer. Ist das Feld leer, ist die Vorschau aus.
Fertige Muster
Muster und Text verlassen Ihr Gerät nicht; alles läuft im Browser, nichts wird gesendet oder gespeichert.
Schreiben Sie ein Muster oder wählen Sie eines der fertigen Muster, um zu beginnen.
Dies ist ein JavaScript-Regex
- Eine benannte Gruppe schreibt man in JavaScript (?<name>…); in Python lautet sie (?P<name>…). Ersetzungen nutzen $<name>, $1 und $& (in PCRE/Python \1 oder \g<name>).
- Atomare Gruppen (?>…) und possessive Quantifizierer (a++) gibt es in JavaScript nicht, ebenso wenig Inline-Flags wie (?i); Flags werden außerhalb angegeben.
- \d, \w und \b sind standardmäßig ASCII; für Umlaute, ß und andere Buchstaben nutzen Sie das Flag u und \p{L}.
- . trifft keine Zeilenumbrüche (dafür braucht es das Flag s); ohne das Flag m sind ^ und $ nur Anfang und Ende des Textes.
Das Ergebnis stammt von der JavaScript-Engine. Die im Betrieb genutzte Engine (PCRE, Python re, Java, .NET, Go RE2) kann sich anders verhalten; testen Sie das Muster zusätzlich in der Zielumgebung. Das Zeitlimit schützt die Seite im Browser, nicht Ihren Code auf einem Server: Wenn Sie Benutzereingaben auf einem Server an einen regulären Ausdruck geben, bedenken Sie eine Längenbegrenzung und eine Engine mit linearer Laufzeit (RE2).
Möchten Sie Regeln zur Datenextraktion und -prüfung sicher in Ihre Integrationsabläufe einbauen? Entwerfen wir es gemeinsam.
Gespräch anfragen01
So funktioniert es
A
Schreiben Sie das Muster (oder wählen Sie ein fertiges Beispiel), setzen Sie die Flags und fügen Sie den Beispieltext ein.
B
Sehen Sie Treffer, Positionen sowie Erfassungs- und benannte Gruppen im hervorgehobenen Text und in der Tabelle.
C
Auf Wunsch schreiben Sie in das Ersetzungsfeld einen Ausdruck mit $1 oder $<name> und sehen sich das Ergebnis in der Vorschau an.
02
Welchen Regex-Dialekt führt dieses Werkzeug aus?
Die eigene reguläre-Ausdrücke-Engine des Browsers für JavaScript (ECMAScript). Die Syntax ist in den meisten Sprachen gleich, es gibt aber Unterschiede: Schreibweise benannter Gruppen, atomare Gruppen, Inline-Flags und die Form von Ersetzungszeichenfolgen unterscheiden sich von Sprache zu Sprache.
Wollen Sie das Muster in eine andere Sprache (Python, Java, .NET, PCRE) übernehmen, nutzen Sie das Werkzeug für einen ersten Test und prüfen es danach in der Zielumgebung erneut. Die Liste unten fasst die häufigsten Unterschiede zusammen.
03
Katastrophales Backtracking und Zeitlimit-Schutz
Manche Muster, besonders verschachtelte Quantifizierer (wie (a+)+$), probieren bei ungeeignetem Text exponentiell viele Pfade durch und können Sekunden oder sogar Minuten dauern. Im Haupt-Thread würde der Tab einfrieren.
Das Werkzeug führt das Muster in einem eigenen Web Worker aus; kommt innerhalb einer Sekunde keine Antwort, wird der Worker beendet und eine Zeitüberschreitung gemeldet. Dasselbe Muster kann auch auf Ihrem Server CPU verbrauchen; lesen Sie die Meldung daher als Warnung.
04
Flags, Gruppen und Ersetzung
g findet alle Treffer, i ignoriert die Groß-/Kleinschreibung, m macht ^ und $ zu Zeilenanfang/-ende, s lässt den Punkt auch Zeilenumbrüche treffen, u arbeitet mit Unicode-Codepunkten und y erzwingt den Treffer an exakt der gesuchten Position.
Klammern bilden eine Erfassungsgruppe und werden nummeriert ($1, $2 …); (?<name>…) vergibt einen Namen, (?:…) erfasst nicht. In einer Ersetzung nutzen Sie $1, $<name> und $&; eine Gruppe ohne Treffer wird zu leerem Text.
Häufige Fragen
- Warum trifft der Punkt (.) keinen Zeilenumbruch?
- In JavaScript trifft der Punkt standardmäßig keine Zeilenendzeichen. Um in mehrzeiligem Text alles zu treffen, schalten Sie das Flag s ein oder nutzen [\s\S]. Für ^ und $ brauchen Sie das Flag m; ohne es sind sie nur Anfang und Ende des Textes.
- Was bedeutet „Zeitüberschreitung“, ist mein Muster falsch?
- Es bedeutet, dass das Muster gültig ist, bei diesem Text aber sehr lange braucht; meist liegt katastrophales Backtracking durch verschachtelte Quantifizierer (z. B. (a+)+, (.*)*) zugrunde. Schreiben Sie das Muster so um, dass weniger Mehrdeutigkeit entsteht: keine verschachtelten Quantifizierer, Alternativen voneinander trennen, möglichst genauere Zeichenklassen verwenden.
- Warum sehe ich nur einen Treffer?
- Ist das Flag g aus, findet JavaScript nur den ersten Treffer. Setzen Sie g, um alle Treffer zu sehen. Dieselbe Regel gilt für die Ersetzung: Ohne g wird nur der erste Treffer ersetzt.
- Wie nutze ich benannte Gruppen?
- Schreiben Sie das Muster wie (?<jahr>\d{4}); in der Tabelle erscheint es mit dem Namen, in der Ersetzung verweisen Sie mit $<jahr> darauf. In Python lautet dieselbe Gruppe (?P<jahr>…); beim Übernehmen müssen Sie die Schreibweise ändern.
- Wie extrahiere ich GS1-Datenbezeichner (AI)?
- In der lesbaren Form mit Klammern, etwa (01)09506000134352(17)261231, liefert das Muster \((?<ai>\d{2,4})\)(?<wert>[^(]+) jeden AI samt Wert in benannten Gruppen. In einer rohen GS1-Zeichenfolge ohne Klammern hängen die Längen vom AI ab; dort muss man mit der AI-Tabelle zerlegen, und ein regulärer Ausdruck allein genügt nicht.
Bauen wir Ihre Regeln zur Datenextraktion sicher in Ihre Systeme ein
Wir entwerfen Regeln zum Extrahieren, Prüfen und Umwandeln von CRM-, ERP-, SCADA- und Logistikdaten innerhalb von Integrationsabläufen. Besprechen wir Ihre bestehende Struktur in einem kostenlosen Erstgespräch.