Regex erklären
Regex Explainer
Zerlegt einen regulären Ausdruck in einen beschrifteten Baum, damit Sie lesen können, was jeder Teil tatsächlich matcht.
Zerlegt einen regulären Ausdruck in einen Baum und sagt, was jedes Stück tut – jede Gruppe, jeder Quantor, jede Klasse und jede Zusicherung, verschachtelt wie das Muster. Es ist derselbe Bildschirm wie der Tester, geöffnet auf seinem Erklären-Tab, denn ein Muster zu lesen und es auszuführen ist dieselbe Tätigkeit.
Muster
kann irgendwo in der Zeichenkette treffen, 2 Fanggruppen.
Was jeder Teil tut
([\w.+-]+)@([\w-]+\.[\w.-]+)Der Reihe nach
Jedes davon muss passen, eines nach dem anderen, ohne etwas dazwischen.
([\w.+-]+)Fanggruppe 1
Trifft auf das Muster darin und merkt sich den Text, verfügbar als `match[1]` und in einer Ersetzung als `$1`.
[\w.+-]+Wiederholt +
Wiederholt ein Mal oder öfter, so oft wie möglich, und gibt nur zurück, wenn der Rest scheitert.
[\w.+-]Ein beliebiges Zeichen aus dieser Menge
Trifft auf genau ein Zeichen, und zwar auf das der folgenden, das in der Eingabe zuerst kommt.
Innerhalb einer Klasse ist `.` ein Punkt. Es bedeutet hier nicht „jedes Zeichen“, und es zu maskieren ändert nichts.
\wEin beliebiges Wortzeichen
Genau `[A-Za-z0-9_]`.
Das ist nur ASCII. Für einen regulären Ausdruck in JavaScript sind `é`, `한` und `ß` keine Wortzeichen, also trifft `\w+` weder auf ein koreanisches noch auf ein akzentuiertes Wort.
.Das Zeichen “.” (U+002E)
Wird genau verglichen, Groß- und Kleinschreibung eingeschlossen.
+Das Zeichen “+” (U+002B)
Wird genau verglichen, Groß- und Kleinschreibung eingeschlossen.
-Das Zeichen “-” (U+002D)
Wird genau verglichen, Groß- und Kleinschreibung eingeschlossen.
@Das Zeichen “@” (U+0040)
Wird genau verglichen, Groß- und Kleinschreibung eingeschlossen.
([\w-]+\.[\w.-]+)Fanggruppe 2
Trifft auf das Muster darin und merkt sich den Text, verfügbar als `match[2]` und in einer Ersetzung als `$2`.
[\w-]+\.[\w.-]+Der Reihe nach
Jedes davon muss passen, eines nach dem anderen, ohne etwas dazwischen.
[\w-]+Wiederholt +
Wiederholt ein Mal oder öfter, so oft wie möglich, und gibt nur zurück, wenn der Rest scheitert.
[\w-]Ein beliebiges Zeichen aus dieser Menge
Trifft auf genau ein Zeichen, und zwar auf das der folgenden, das in der Eingabe zuerst kommt.
\wEin beliebiges Wortzeichen
Genau `[A-Za-z0-9_]`.
Das ist nur ASCII. Für einen regulären Ausdruck in JavaScript sind `é`, `한` und `ß` keine Wortzeichen, also trifft `\w+` weder auf ein koreanisches noch auf ein akzentuiertes Wort.
-Das Zeichen “-” (U+002D)
Wird genau verglichen, Groß- und Kleinschreibung eingeschlossen.
\.Das Zeichen “.” (U+002E)
Wird genau verglichen, Groß- und Kleinschreibung eingeschlossen.
Der Backslash ist hier überflüssig — an dieser Stelle hat dieses Zeichen keine besondere Bedeutung.
[\w.-]+Wiederholt +
Wiederholt ein Mal oder öfter, so oft wie möglich, und gibt nur zurück, wenn der Rest scheitert.
[\w.-]Ein beliebiges Zeichen aus dieser Menge
Trifft auf genau ein Zeichen, und zwar auf das der folgenden, das in der Eingabe zuerst kommt.
Innerhalb einer Klasse ist `.` ein Punkt. Es bedeutet hier nicht „jedes Zeichen“, und es zu maskieren ändert nichts.
\wEin beliebiges Wortzeichen
Genau `[A-Za-z0-9_]`.
Das ist nur ASCII. Für einen regulären Ausdruck in JavaScript sind `é`, `한` und `ß` keine Wortzeichen, also trifft `\w+` weder auf ein koreanisches noch auf ein akzentuiertes Wort.
.Das Zeichen “.” (U+002E)
Wird genau verglichen, Groß- und Kleinschreibung eingeschlossen.
-Das Zeichen “-” (U+002D)
Wird genau verglichen, Groß- und Kleinschreibung eingeschlossen.
Flags
- g —
global - Findet jeden Treffer, statt beim ersten aufzuhören. Dafür verschieben `.test()` und `.exec()` zwischen den Aufrufen `lastIndex`, was die übliche Quelle von „jeder zweite Aufruf schlägt fehl“ ist.
So funktioniert es
Fügen Sie das Muster ein, das Sie geerbt haben
Das in der Konfigurationsdatei, an dessen Verfasser sich niemand erinnert. Es wird geparst statt per Mustervergleich erfasst, sodass die Aufschlüsselung der echten Struktur folgt.
Lesen Sie den Baum von oben nach unten
Jeder Knoten zeigt das Quellfragment, was es ist und was es tut. Hinweise markieren die Teile, die häufig überraschen – ein verschachtelter Quantor, eine Gruppe, die erfasst, obwohl sie es nicht musste.
Wechseln Sie zu Testen, um Ihre Lesart zu prüfen
Das Muster wird mitgenommen. Einen Regex zu verstehen und zu bestätigen, dass er tut, was Sie denken, sind zwei verschiedene Schritte, und der zweite ist der billige.
Häufige Fragen
Was bedeutet die Warnung bei einem verschachtelten Quantor?
Etwas wie `(a+)+` gibt der Engine exponentiell viele Möglichkeiten, denselben Text aufzuteilen, sodass eine nicht passende Eingabe länger dauern kann als das Alter des Universums. Das ist die Form hinter den meisten Denial-of-Service-Angriffen mit regulären Ausdrücken.
Warum sagt es mir, dass eine Gruppe erfasst?
Weil eine erfassende Gruppe, die Sie nicht verwenden, einen Platz kostet und die Nummerierung derer verschiebt, die Sie verwenden. `(?:…)` gruppiert, ohne zu erfassen, was `$1` auf das zeigen lässt, was Sie meinten.
Erklärt es auch Flags?
Ja, in einem eigenen Panel – jedes gesetzte Flag, sein Name und was es ändert. `m` und `s` sind besonders lesenswert, denn ihre Namen legen jeweils das Verhalten des anderen nahe.
Eingabe aus
Regex-Tester
Regex Tester
Testet einen regulären Ausdruck gegen Beispieltext, mit Live-Hervorhebung der Treffer und Auflistung der Fanggruppen.
JSON formatieren und validieren
JSON Formatter & Validator
Formatiert, minimiert und validiert JSON und zeigt bei Syntaxfehlern die genaue Zeile und Spalte.
YAML formatieren und validieren
YAML Formatter & Validator
Rückt YAML einheitlich ein, validiert es und markiert die Tab- und Anker-Fehler, an denen Parser scheitern.
TOML formatieren und validieren
TOML Formatter & Validator
Formatiert und validiert TOML und normalisiert die Tabellenreihenfolge sowie den Stil von Inline-Tabellen.
Danach
Diese Tools nehmen an, was dieses hier erzeugt, das Ergebnis kann also direkt weiter.
Suchen und Ersetzen
Find & Replace
Ersetzt Text wörtlich, als ganzes Wort oder per regulärem Ausdruck, mit Fanggruppen und Vorschau jedes Treffers.
Regex-Tester
Regex Tester
Testet einen regulären Ausdruck gegen Beispieltext, mit Live-Hervorhebung der Treffer und Auflistung der Fanggruppen.
Muster extrahieren
Pattern Extractor
Zieht jede E-Mail-Adresse, URL, Zahl, jedes Datum oder jeden Treffer eines eigenen regulären Ausdrucks aus einem Textblock in eine Liste.
Base64 kodieren und dekodieren
Base64 Encoder & Decoder
Kodiert und dekodiert Base64 und Base64URL für Text oder Dateien und behandelt UTF-8 korrekt.
curl in Code
curl to Code
Wandelt einen curl-Befehl in fetch, axios, Python requests, Go, PHP oder PowerShell um.
Text-Hash
Text Hash
Berechnet MD5, SHA-1, SHA-256, SHA-384, SHA-512 und CRC-32 einer Zeichenkette, wahlweise in Großbuchstaben oder als Base64.