Warum reguläre Ausdrücke online testen?
Du schreibst eine Regex, sie sieht korrekt aus, und trotzdem matcht sie in 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 - Stelle sicher, dass deine Regex exakt das matcht, was du erwartest
- Bestehendes Pattern debuggen - Finde heraus, warum eine Regex die falschen Teilstrings erfasst
- RE2-Kompatibilität prüfen - Bestätige, dass dein Pattern mit der RE2-Engine von Go funktioniert, bevor du es deployst
So verwendest du den Regex Tester in 3 Schritten
Schritt 1: Pattern eingeben
Gib deinen 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üge den Text ein, gegen den du deine Regex testen möchtest:
v=spf1 include:_spf.captaindns.com include:spf.protection.outlook.com ~all
Aktiviere 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. Du nutzt 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>...) |
| Globaler Non-Greedy-Flag | (?U) | Kein Standard |
| Unicode | Nativ (UTF-8) | Über Flag u |
Vorteil von RE2: 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: Du willst prüfen, ob dein SPF-Eintrag die richtigen Include-Mechanismen enthält.
Diagnose: Teste das Pattern include:([a-z0-9._-]+) gegen den Wert deines TXT-Eintrags. Das Tool listet jede enthaltene Domain mit ihrer Position auf.
Aktion: Vergleiche die extrahierten Domains mit deiner Soll-Liste. Fehlende oder fehlerhafte Includes fallen sofort auf.
E-Mail-Adressen aus einem Text extrahieren
Situation: Du musst alle E-Mail-Adressen aus einer Konfigurationsdatei extrahieren.
Diagnose: Verwende 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üfe jede extrahierte Adresse auf Legitimität und korrektes Format.
Log-Parsing-Pattern debuggen
Situation: Dein Log-Parser erfasst den Timestamp nicht im richtigen Format.
Diagnose: Teste dein Pattern mit benannten Gruppen: (?P<date>\d{4}-\d{2}-\d{2}) (?P<time>\d{2}:\d{2}:\d{2}). Prüfe, ob die Gruppen die richtigen Teilstrings erfassen.
Aktion: Passe 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üfe Klammern und eckige Klammern |
invalid escape sequence | Nicht erkannte Escape-Sequenz in RE2 | Verwende \\ für einen literalen Backslash |
invalid named capture | Falsche Syntax für eine benannte Gruppe | Verwende (?P<name>...) (nicht (?<name>...)) |
invalid repeat count | Quantifizierer außerhalb der Grenzen | Reduziere den Wert des Quantifizierers |
| Kein Ergebnis | Pattern zu restriktiv oder Flag fehlt | Aktiviere das Flag „Groß-/Kleinschreibung ignorieren" oder Dot-All |
❓ FAQ - Häufig gestellte Fragen
F: Warum findet meine Regex keinen Treffer?
A: Überprüfe die RE2-Syntax: Lookahead/Lookbehind und Backreferences werden nicht unterstützt. Aktiviere das Flag „Groß-/Kleinschreibung ignorieren", wenn dein Text unerwartete Großbuchstaben enthält. Prüfe außerdem, ob dein 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. Dein Pattern und dein 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 deiner Regex gematchten Textes berechnen |
| Base64-Encoder/Decoder | Base64-Text dekodieren, bevor du ihn mit einer Regex testest |
| URL-Encoder/Decoder | Kodierte URLs dekodieren, bevor du sie per Regex extrahierst |
| Groß-/Kleinschreibung-Konverter | Textschreibweise vor dem Testen normalisieren |
| SPF-Inspektor | SPF-Einträge überprüfen, die du per Regex validierst |
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
Dein Pattern und dein 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.