Zum Inhalt springen
LeedyBox
Unterstützen

RegEx-Tester, Ersetzen & Spickzettel

Reguläre Ausdrücke mit hervorgehobenen Treffern und Gruppen testen, Ersetzungen vorab ansehen und das Muster als Code für sechs Sprachen kopieren.

Flags
Treffer: 0

Trefferdetails und Gruppen

Spickzettel

Klicken Sie auf ein Muster, um es mit einem Beispieltext zu laden.

Syntax-Übersicht

Zeichen

.Beliebiges Zeichen außer Zeilenumbruch (mit s: einschließlich Zeilenumbruch)
\d \DZiffer 0–9 / keine Ziffer
\w \WWortzeichen (A–Z, a–z, 0–9, _) / kein Wortzeichen
\s \SLeerraum / kein Leerraum
[abc] [^abc]Eines von a, b, c / alles außer a, b, c
[a-z]Ein Zeichen im Bereich a bis z
\p{L}Ein Buchstabe in jeder Sprache (benötigt das Flag u)
\. \\ \(Sonderzeichen maskieren, um es wörtlich zu finden

Quantoren

* + ?0 oder mehr / 1 oder mehr / 0 oder 1
{n} {n,} {n,m}Genau n / n oder mehr / zwischen n und m
*? +? {n,m}?Genügsam: so wenige Zeichen wie möglich

Anker

^ $Anfang / Ende des Textes (jeder Zeile mit m)
\b \BWortgrenze / keine Wortgrenze

Gruppen & Lookaround

(…)Erfassende Gruppe, verwendet als $1, $2 …
(?:…)Gruppe ohne Erfassung
(?<name>…)Benannte Gruppe, verwendet als $<name>
\1 \k<name>Rückverweis: derselbe Text, den eine Gruppe getroffen hat
a|ba oder b
(?=…) (?!…)Gefolgt von / nicht gefolgt von
(?<=…) (?<!…)Vorangestellt / nicht vorangestellt

Ersetzung

$1 $<name>Text einer nummerierten oder benannten Gruppe
$& $$Der gesamte Treffer / ein wörtliches $

Prüfen Sie die Ergebnisse vor der Verwendung. Das Tool wird ohne Gewähr im vorliegenden Zustand bereitgestellt; die Ergebnisse können unvollständig oder falsch sein. Nutzungsbedingungen

Muster werden mit der RegEx-Engine von JavaScript getestet. Syntax und Verhalten können in anderen Sprachen und Datenbanken abweichen. Die Muster im Spickzettel sind praktische Beispiele, keine vollständigen Validierungen.

So geht's

  1. Geben Sie das Muster unter „Regulärer Ausdruck“ ohne umschließende Schrägstriche und Flags ein und fügen Sie Ihren Text in „Testtext“ ein. Treffer werden während der Eingabe unter „Treffer“ hervorgehoben und gezählt. Um mit einem Beispiel zu beginnen, klicken Sie im „Spickzettel“ auf ein Muster; dadurch werden das aktuelle Muster, die Flags, der Testtext und die Ersetzungseinstellungen ersetzt.
  2. Aktivieren Sie unter „Flags“ die benötigten Flags; wenn Sie mit der Maus über einen Buchstaben fahren, sehen Sie, was er bewirkt. Beim Öffnen der Seite sind g und u aktiviert. Ohne g wird nur der erste Treffer gefunden und nur dieser ersetzt.
  3. Unter „Trefferdetails und Gruppen“ wird jeder Treffer mit seiner Position und dem Text jeder Gruppe als $1, $2 usw. aufgeführt, bei benannten Gruppen mit deren Namen. Aktivieren Sie das Flag d, um zusätzlich zu sehen, wo jede Gruppe beginnt und endet.
  4. Um eine Ersetzung auszuprobieren, aktivieren Sie „Treffer ersetzen durch“ und geben Sie den Ersatztext ein, mit $1 oder $<name> für Gruppen. Der geänderte Text erscheint unter „Ergebnis der Ersetzung“, und „Ergebnis kopieren“ kopiert ihn.
  5. Wählen Sie unter „Code-Generator“ JavaScript, Python, Java, PHP, Go oder C# und klicken Sie auf „Code kopieren“. Ist „Treffer ersetzen durch“ aktiviert, enthält der Code auch die Ersetzung. „Als /Muster/Flags kopieren“ kopiert das Muster als RegEx-Literal für JavaScript.

Häufig gestellte Fragen

Wird der getestete Text irgendwohin gesendet?

Nein. Muster und Testtext werden in Ihrem Browser von dessen eigener RegEx-Engine für JavaScript abgeglichen und nicht zu LeedyBox hochgeladen. Das Tool speichert sie auch nicht.

Warum trifft mein Muster mehr Text als erwartet?

Ein Muster trifft überall, wo es passt, daher findet \d{3} auch 123 in 12345. Setzen Sie \b an beide Enden, um nur ganze Wörter oder Zahlen zu treffen, oder verlangen Sie mit ^ und $, dass der gesamte Text passt (bei aktiviertem m jede Zeile), wie es das Passwort-Muster im Spickzettel tut. \b beruht auf den Wortzeichen von \w (A–Z, a–z, 0–9 und _) und behandelt Buchstaben wie ä, é oder 한 als Nicht-Wortzeichen, daher findet \bcafé\b das Wort café nicht, wenn darauf ein Leerzeichen folgt. Außerdem sind Quantoren wie + und * gierig: Bei <b>x</b> trifft das Muster <.+> die ganze Zeichenkette, während <.+?> oder <[^>]+> beim ersten > endet.

Warum zeigt ein Muster, das in Python, PHP oder Java funktioniert, hier einen RegEx-Fehler?

Diese Seite verwendet die Engine von JavaScript, die manche Syntax anderer Engines ablehnt, etwa benannte Gruppen der Form (?P<name>…), Inline-Flags wie (?i) am Anfang, atomare Gruppen (?>…) und possessive Quantoren wie a++. Schreiben Sie benannte Gruppen als (?<name>…) und verwenden Sie statt Inline-Flags die Kontrollkästchen unter „Flags“. Mit dem Flag u ist JavaScript außerdem bei Escape-Sequenzen strenger: \# ist ein Fehler, ebenso \- außerhalb eckiger Klammern; entfernen Sie dann den Backslash oder deaktivieren Sie u.

Warum trifft \p{L} keine Buchstaben, oder warum zählt ein Emoji als zwei Zeichen?

Unicode-Eigenschaftsklassen wie \p{L} benötigen das Flag u; ohne u liest JavaScript \p{L} als wörtlichen Text p{L}, und . trifft bei einem Zeichen außerhalb der Basic Multilingual Plane, etwa bei vielen Emojis, nur eine Hälfte. Beim Laden eines Musters aus dem Spickzettel werden auch dessen Flags geladen, und bei allen außer „Sonderzeichen“ ist u deaktiviert; prüfen Sie daher „Flags“, bevor Sie solche Syntax ergänzen. Auch mit u trifft . einen Codepunkt, und manche Emojis, etwa Flaggen oder ein „Daumen hoch“ mit Hautfarbe, bestehen aus zwei oder mehr. Positionen in den Trefferdetails zählen wie JavaScript in UTF-16-Codeeinheiten, daher belegen Zeichen außerhalb der Basic Multilingual Plane auch mit u zwei Positionen.

Warum fügt \n im Ersatztext keinen Zeilenumbruch ein?

Der Ersatztext folgt den Regeln von replace() in JavaScript: Nur Folgen, die mit $ beginnen, haben eine besondere Bedeutung, daher werden \n und \t als Backslash mit nachfolgendem Buchstaben eingefügt, nicht als Zeilenumbruch oder Tabulator. Das Feld ist einzeilig, daher lässt sich hier kein Zeilenumbruch eingeben; fügen Sie ihn stattdessen im erzeugten Code ein. Um Treffer zu löschen, aktivieren Sie „Treffer ersetzen durch“ und lassen das Feld leer, wie es das Muster „HTML-/XML-Tags entfernen“ im Spickzettel tut.

Was passiert, wenn ein Muster sehr langsam ist oder sehr viele Treffer findet?

Wenn der Browser Web Worker zulässt, läuft die Suche in einem Hintergrund-Worker und wird nach 2 Sekunden abgebrochen. Ein Muster mit katastrophalem Backtracking, etwa (a+)+$ bei einer langen Folge von a mit einem anderen Zeichen am Ende, zeigt dann eine Meldung an, statt die Seite einzufrieren. Die Zahl unter „Treffer“ umfasst alle Treffer, hervorgehoben und in den Details aufgeführt werden aber nur die ersten 1.000.

Kann ich den erzeugten Code unverändert in mein Projekt übernehmen?

Nutzen Sie ihn als Ausgangspunkt. Der Generator gibt das Muster in JavaScript als RegEx-Literal und in den anderen Sprachen als String aus, schreibt benannte Gruppen und Verweise im Ersatztext um, wo sich die Syntax unterscheidet, etwa zu (?P<name>…) und \g<1> in Python, überträgt die Flags i, m und s und erwartet Ihre Eingabe in einer Variablen namens text. Enthält das Muster Anführungszeichen oder Schrägstriche, prüfen Sie, ob das Snippet sie korrekt maskiert. Die Engines unterscheiden sich dennoch: Das Paket regexp von Go verwendet die RE2-Syntax, die weder Lookaround noch Rückverweise unterstützt, und das Standardmodul re von Python unterstützt keine \p{…}-Klassen; testen Sie den Code daher mit Ihren eigenen Daten.