Warum reguläre Ausdrücke online testen?
Sie schreiben eine Regex, sie sieht korrekt aus, und trotzdem matcht sie in der Produktion nicht. Der Grund: Syntaxfehler, Unicode-Grenzfälle oder Unterschiede zwischen Engines bleiben ohne Test unsichtbar.
Drei zentrale Anwendungsfälle:
- Pattern vor der Integration validieren - Stellen Sie sicher, dass Ihre Regex exakt das matcht, was Sie erwarten
- Bestehendes Pattern debuggen - Finden Sie heraus, warum eine Regex die falschen Teilstrings erfasst
- RE2-Kompatibilität prüfen - Bestätigen Sie, dass Ihr Pattern mit der RE2-Engine von Go funktioniert, bevor Sie es deployen
So verwenden Sie den Regex Tester in 3 Schritten
Schritt 1: Pattern eingeben
Geben Sie Ihren regulären Ausdruck in das dafür vorgesehene Feld ein. Beispiel zum Extrahieren einer SPF-Domain:
include:(?P<domain>[a-z0-9._-]+)
Schritt 2: Testtext einfügen
Fügen Sie den Text ein, gegen den Sie Ihre Regex testen möchten:
v=spf1 include:_spf.captaindns.com include:spf.protection.outlook.com ~all
Aktivieren Sie bei Bedarf die Flags (Groß-/Kleinschreibung ignorieren, mehrzeilig usw.).
Schritt 3: Ergebnisse lesen
Das Tool zeigt jeden Treffer mit Byte-Position, gematchtem Inhalt und Capture-Gruppen an. Benannte Gruppen erscheinen mit ihrem Namen.
Was ist ein regulärer Ausdruck?
Ein regulärer Ausdruck (Regex) ist ein Pattern, das eine Menge von Zeichenketten beschreibt. Sie nutzen Regex, um Text zu suchen, zu validieren oder Teilstrings gezielt zu extrahieren.
Grundlegende Bestandteile:
| Element | Syntax | Beispiel | Ergebnis |
|---|---|---|---|
| Literales Zeichen | a | abc in "abcdef" | matcht "abc" |
| Zeichenklasse | [a-z] | [0-9]+ in "port 443" | matcht "443" |
| Quantifizierer | +, *, ? | a+ in "aab" | matcht "aa" |
| Capture-Gruppe | (...) | (abc) in "xabcx" | erfasst "abc" |
| Anker | ^, $ | ^v=spf1 | matcht am Zeilenanfang |
| Alternative | a|b | cat|dog in "my cat" | matcht "cat" |
Konkretes Beispiel mit benannten Gruppen:
(?P<protocol>https?)://(?P<domain>[a-z0-9.-]+)
Angewendet auf https://captaindns.com/tools:
- Gruppe
protocol:https - Gruppe
domain:captaindns.com
RE2-Syntax vs. PCRE: die Unterschiede
Go und Google setzen auf RE2. Diese Engine unterscheidet sich fundamental von PCRE (PHP, JavaScript, Python):
| Funktion | RE2 | PCRE |
|---|---|---|
| Garantierte Ausführungszeit | Linear (O(n)) | Exponentiell möglich |
| Lookahead/Lookbehind | Nicht unterstützt | Unterstützt |
Backreferences (\1) | Nicht unterstützt | Unterstützt |
| Possessive Quantifizierer | Nicht unterstützt | Unterstützt |
| Benannte Gruppen | (?P<name>...) | (?P<name>...) oder (?<name>...) |
| Globales Non-Greedy-Flag | (?U) | Kein Standard |
| Unicode | Nativ (UTF-8) | Über Flag u |
Vorteil von RE2: Die lineare Laufzeitgarantie eliminiert ReDoS-Angriffe (Regular Expression Denial of Service). Deshalb ist RE2 die Standardwahl für produktionskritische Webdienste.
Praxisnahe Anwendungsfälle
SPF-Eintrag validieren
Situation: Sie wollen prüfen, ob Ihr SPF-Eintrag die richtigen Include-Mechanismen enthält.
Diagnose: Testen Sie das Pattern include:([a-z0-9._-]+) gegen den Wert Ihres TXT-Eintrags. Das Tool listet jede enthaltene Domain mit ihrer Position auf.
Aktion: Vergleichen Sie die extrahierten Domains mit Ihrer Soll-Liste. Fehlende oder fehlerhafte Includes fallen sofort auf.
E-Mail-Adressen aus einem Text extrahieren
Situation: Sie müssen alle E-Mail-Adressen aus einer Konfigurationsdatei extrahieren.
Diagnose: Verwenden Sie das Pattern [a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,} mit dem Flag "Groß-/Kleinschreibung ignorieren". Jede gefundene E-Mail erscheint als separater Treffer.
Aktion: Prüfen Sie jede extrahierte Adresse auf Legitimität und korrektes Format.
Log-Parsing-Pattern debuggen
Situation: Ihr Log-Parser erfasst den Timestamp nicht im richtigen Format.
Diagnose: Testen Sie Ihr Pattern mit benannten Gruppen: (?P<date>\d{4}-\d{2}-\d{2}) (?P<time>\d{2}:\d{2}:\d{2}). Prüfen Sie, ob die Gruppen die richtigen Teilstrings erfassen.
Aktion: Passen Sie Quantifizierer oder Zeichenklassen an, bis die Gruppen die erwarteten Werte liefern.
Häufige Syntaxfehler
| Fehler | Ursache | Lösung |
|---|---|---|
error parsing regexp | Ungültige Syntax (nicht geschlossene Klammer, Quantifizierer ohne Ziel) | Überprüfen Sie Klammern und eckige Klammern |
invalid escape sequence | Nicht erkannte Escape-Sequenz in RE2 | Verwenden Sie \\ für einen literalen Backslash |
invalid named capture | Falsche Syntax für eine benannte Gruppe | Verwenden Sie (?P<name>...) (nicht (?<name>...)) |
invalid repeat count | Quantifizierer außerhalb der Grenzen | Reduzieren Sie den Wert des Quantifizierers |
| Kein Ergebnis | Pattern zu restriktiv oder Flag fehlt | Aktivieren Sie das Flag "Groß-/Kleinschreibung ignorieren" oder Dot-All |
❓ FAQ - Häufig gestellte Fragen
F: Warum findet meine Regex keinen Treffer?
A: Überprüfen Sie die RE2-Syntax: Lookahead/Lookbehind und Backreferences werden nicht unterstützt. Aktivieren Sie das Flag "Groß-/Kleinschreibung ignorieren", wenn Ihr Text unerwartete Großbuchstaben enthält. Prüfen Sie außerdem, ob Ihr Pattern nicht-escapte Sonderzeichen enthält.
F: Was ist die RE2-Syntax?
A: RE2 ist die Regex-Engine von Go. Sie garantiert eine lineare Ausführungszeit relativ zur Eingabegröße, im Gegensatz zu PCRE, das anfällig für ReDoS-Angriffe (Regular Expression Denial of Service) sein kann.
F: Welche Regex-Flags sind verfügbar?
A: Vier Flags sind verfügbar: Groß-/Kleinschreibung ignorieren (i), mehrzeilig (m), Dot matcht Newline (s) und Non-Greedy (U). Jedes Flag ändert das Verhalten der Engine für das gesamte Pattern.
F: Wie groß darf der Text sein?
A: Das Pattern ist auf 10 KB und der Testtext auf 1 MB begrenzt. Die maximale Anzahl zurückgegebener Treffer beträgt 1.000. Diese Limits schützen den Dienst vor Missbrauch.
F: Was ist eine benannte Capture-Gruppe?
A: Eine benannte Gruppe verwendet die Syntax (?P<name>...) in RE2. Sie ermöglicht es, einen Teilstring über einen Namen statt über einen numerischen Index zu extrahieren. Nützlich für komplexe Patterns mit mehreren Gruppen.
F: Ist RE2 mit JavaScript-Regex kompatibel?
A: Teilweise. RE2 unterstützt die meiste gängige Syntax (Zeichenklassen, Quantifizierer, Gruppen). Fehlende Funktionen: Lookahead, Lookbehind, Backreferences und possessive Quantifizierer.
F: Werden die Daten gespeichert?
A: Nein. Ihr Pattern und Ihr Text werden zur Verarbeitung an die CaptainDNS-API gesendet und anschließend sofort gelöscht. Kein Inhalt wird gespeichert oder protokolliert.
Ergänzende Tools
| Tool | Zweck |
|---|---|
| Hash-Generator | Den Hash eines von Ihrer Regex gematchten Textes berechnen |
| Base64-Encoder/Decoder | Base64-Text dekodieren, bevor Sie ihn mit einer Regex testen |
| URL-Encoder/Decoder | Kodierte URLs dekodieren, bevor Sie sie per Regex extrahieren |
| Groß-/Kleinschreibung-Konverter | Textschreibweise vor dem Testen normalisieren |
| SPF-Inspektor | SPF-Einträge überprüfen, die Sie per Regex validieren |
Nützliche Ressourcen
- RE2-Syntaxreferenz (vollständige Syntax der RE2-Engine)
- RFC 7208 - SPF (Format der per Regex testbaren SPF-Einträge)
- Regular-Expressions.info (umfassendes Tutorial zu regulären Ausdrücken)
Datenschutz-Engagement
Ihr Pattern und Ihr Text werden ausschließlich zur Regex-Testausführung an die CaptainDNS-API gesendet. Kein Inhalt wird nach der Verarbeitung gespeichert. Nur anonyme Metriken werden protokolliert: Pattern-Größe, Trefferanzahl, Verarbeitungsdauer.