Regex-Tester: Muster gegen den eigenen Text aufbauen und debuggen
Ein regulärer Ausdruck ist eine winzige Sprache, um die Form von Text zu beschreiben. Statt zu fragen "Steht hier genau dieses Wort?", erlaubt eine Regex die Frage "Gibt es eine Zeichenfolge, die so aussieht?" Genau das macht sie so mächtig beim Suchen, Validieren, Extrahieren und Ersetzen von Text in Code-Editoren, Logdateien, Formulareingaben und Skripten. Und genau das macht es auch leicht, Fehler zu machen, denn ein Muster, das im Kopf einleuchtend klingt, kann unbemerkt zu viel, zu wenig oder gar nichts treffen.
Deshalb schlägt interaktives Testen das bloße Raten. Wenn Sie ein Muster eintippen und beobachten, wie Treffer quer durch echten Beispieltext aufleuchten, erhalten Sie sofortiges Feedback: Sie sehen, was erfasst wurde, was durchgerutscht ist und welche Erfassungsgruppe welches Stück gegriffen hat. Unser Regex-Tester läuft vollständig in Ihrem Browser. Ihr Muster und Ihr Beispieltext verlassen die Seite nie, sodass Sie Logzeilen, E-Mails oder Produktionsdaten einfügen können, ohne irgendetwas an einen Server zu senden.

Die Bausteine, die man kennen sollte
Die meisten alltäglichen Muster setzen sich aus einer kleinen Menge von Elementen zusammen. Wenn Sie diese beherrschen, können Sie die Mehrheit der Regexes lesen, die Ihnen in freier Wildbahn begegnen.
Zeichenklassen beschreiben eine Menge erlaubter Zeichen. [aeiou] trifft einen beliebigen einzelnen Vokal, [0-9] trifft eine Ziffer und [a-zA-Z] trifft einen Buchstaben. Ein Zirkumflex innerhalb der Klammern negiert die Menge, sodass [^0-9] "jedes Zeichen, das keine Ziffer ist" bedeutet. Kurzschreibweisen sparen Tipparbeit: \d ist eine Ziffer, \w ist ein Wortzeichen (Buchstaben, Ziffern, Unterstrich), \s ist ein Leerraumzeichen und der Punkt . trifft fast jedes einzelne Zeichen.
Quantoren geben an, wie oft sich das vorherige Element wiederholen darf. * bedeutet null oder mehr, + bedeutet eins oder mehr und ? bedeutet null oder eins (optional). Für genaue Anzahlen bedeutet {3} exakt drei und {2,4} zwei bis vier. So trifft \d{4} eine vierstellige Jahreszahl und colou?r trifft beide Schreibweisen.
Anker heften ein Muster an eine Position statt an ein Zeichen. ^ trifft den Anfang des Textes, $ trifft das Ende und \b markiert eine Wortgrenze. Das Muster ^Error trifft nur Zeilen, die mit "Error" beginnen, was genau das ist, was Sie beim Durchsuchen von Logs wollen.
Gruppen umschließen einen Teil eines Musters in Klammern, sowohl um einen Quantor auf mehrere Zeichen auf einmal anzuwenden als auch um den getroffenen Text zur Wiederverwendung zu erfassen. In (\d{4})-(\d{2})-(\d{2}) erfasst jede Gruppe einen Datumsbestandteil, den Sie später herausziehen können. Alternation mit dem senkrechten Strich wirkt wie ein "oder": cat|dog|fish trifft eines der drei Wörter.
Muster, zu denen Sie tatsächlich greifen werden
Einige wiederkehrende Aufgaben decken die meiste echte Arbeit ab. Um etwas E-Mail-Ähnliches zu erfassen, ist [\w.+-]+@[\w-]+\.[\w.-]+ ein pragmatischer Ausgangspunkt; vollständige E-Mail-Validierung nach der formalen Spezifikation ist bekanntermaßen vertrackt, und ein lockeres Muster ist meist die richtige Wahl, um Kandidaten hervorzuheben, statt Nutzer abzuweisen.
Für Zahlen greift \d+ Folgen von Ziffern, während -?\d+(\.\d+)? optionale Minuszeichen und Dezimalstellen trifft. Um führenden und nachgestellten Leerraum zu entfernen, treffen Sie ^\s+|\s+$ und ersetzen es durch nichts. Um doppelte Wörter zu finden, trifft das Rückwärtsverweis-Muster \b(\w+)\s+\1\b ein Wort, gefolgt von sich selbst, wobei sich \1 auf die erste erfasste Gruppe zurückbezieht.

Flags ändern das Verhalten beim Matching
Flags sind Schalter, die das gesamte Muster verändern. Das globale Flag (g) findet jeden Treffer, statt beim ersten aufzuhören, was Sie beim Hervorheben aller Vorkommen wollen. Das Groß-/Kleinschreibung-ignorierende Flag (i) sorgt dafür, dass error sowohl "Error" als auch "ERROR" trifft. Das Mehrzeilen-Flag (m) verändert ^ und $ so, dass sie am Anfang und Ende jeder Zeile treffen, nicht nur des gesamten Textes, was für zeilenweise Logarbeit unerlässlich ist. Weitere nützliche Flags sind s (dotall, sodass der Punkt auch Zeilenumbrüche trifft) und u für vollständige Unicode-Behandlung.
Die Varianten unterscheiden sich je nach Sprache leicht
Regex ist eine Familie von Dialekten, kein einziger fester Standard. JavaScript, Python, PCRE (PHP), Java, .NET, Go und Rust stimmen in der oben genannten Kernsyntax überein, weichen aber an den Rändern voneinander ab: Unterstützung für Lookbehind, Syntax benannter Gruppen ((?<name>...) versus (?P<name>...)), Unicode-Eigenschafts-Escapes und welche Flags existieren – all das variiert. Ein Muster, das in einer Engine funktioniert, braucht in einer anderen vielleicht eine kleine Anpassung, daher lohnt es sich, gegen die Variante zu testen, die Sie tatsächlich ausliefern. Wenn Sie ein Muster sauber eingestellt haben, können unsere weiteren Entwicklerwerkzeuge und Textwerkzeuge bei der umgebenden Arbeit des Bereinigens, Kodierens und Umwandelns der gerade getroffenen Daten helfen.
Häufig gestellte Fragen
Wird mein Text an einen Server gesendet?
Nein. Der Regex-Tester läuft vollständig in Ihrem Browser. Ihr Muster und Ihr Beispieltext bleiben auf Ihrem Gerät und werden nie hochgeladen, sodass es sicher ist, vertrauliche Daten einzufügen.
Welche Regex-Variante verwendet dieses Werkzeug?
Es verwendet die in Ihren Browser eingebaute JavaScript-Regex-Engine. Die Kernsyntax entspricht dem, was Sie aus den meisten Sprachen kennen, auch wenn sich einige fortgeschrittene Funktionen leicht von PCRE, Python oder .NET unterscheiden.
Was ist der Unterschied zwischen gierigem und genügsamem Matching?
Standardmäßig sind Quantoren gierig und greifen so viel Text wie möglich. Ein Fragezeichen macht sie genügsam, sodass sie so wenig wie möglich greifen. Zum Beispiel ist das Muster Punkt-Stern gierig, während Punkt-Stern-Fragezeichen genügsam ist.
Wie treffe ich ein wörtliches Sonderzeichen?
Maskieren Sie es mit einem Backslash. Um einen tatsächlichen Punkt zu treffen, schreiben Sie Backslash Punkt. Dasselbe gilt für andere Metazeichen wie Klammern, eckige Klammern, das Pluszeichen und das Fragezeichen.
Warum trifft mein Muster nichts?
Häufige Ursachen sind ein fehlendes globales Flag, Anker, die den Treffer an die falsche Position heften, ein nicht maskiertes Sonderzeichen oder gierige Quantoren, die über die erwartete Grenze hinauslaufen. Testen Sie Stück für Stück, um den Übeltäter zu finden.
Kann ich Teile des Treffers erfassen?
Ja. Umschließen Sie einen Abschnitt des Musters mit Klammern, um eine Erfassungsgruppe zu erstellen. Jede Gruppe wird separat ausgegeben, sodass Sie Felder wie Jahr, Monat und Tag aus einem Datum extrahieren können.
