DevToolPal
DE

PCRE-Regex-Tester

Teste PHP- und Perl-kompatible reguläre Ausdrücke mit der echten PCRE2-Engine: Rekursion, possessive Quantoren, \K und mehr.

Läuft lokal, wird nie hochgeladen

Optionen

Testtext

0 Zeichen · 0 B

Ergebnis

Das Ergebnis erscheint hier

Was das Tool macht

Der PCRE-Regex-Tester prüft einen regulären Ausdruck gegen deinen Text – mit der echten PCRE2-Bibliothek, derselben Engine, die PHP, Perl-artige Tools und viele Webserver verwenden. Treffer werden hervorgehoben, jeder Treffer wird mit Position und Capture-Gruppen aufgelistet, und eine optionale Ersetzung zeigt das Ergebnis einer Substitution im Stil von preg_replace.

Das Testen mit der echten Engine ist wichtig, weil sich reguläre Ausdrücke in PCRE und JavaScript in kleinen, aber entscheidenden Punkten unterscheiden. Ein Muster, das in einem browserbasierten Tester funktioniert, kann sich in PHP nicht kompilieren lassen oder etwas anderes treffen.

So benutzt du es

  1. Gib das Muster ohne Begrenzer unter PCRE-Muster ein.
  2. Füge den zu durchsuchenden Text unter Testtext ein.
  3. Aktiviere die Modifikatoren, die du brauchst: g für alle Treffer (wie preg_match_all), i, m, s, x, U und u für Unicode-fähige \w, \d und \b.
  4. Fülle optional Ersetzen durch aus, um die Ersetzung in der Vorschau zu sehen. Verwende $1 oder ${1} für nummerierte Gruppen, ${name} für benannte Gruppen und $0 für den gesamten Treffer.

Bei ungültigen Mustern erscheint die Fehlermeldung von PCRE2 selbst sowie die Stelle im Muster, an der es aufgegeben hat.

Beispiel

Das Standardmuster \((?:[^()]++|(?R))*\) findet ausgeglichene Klammern. Es trifft ein Klammerpaar, das entweder Zeichen ohne Klammern oder – rekursiv – wieder das ganze Muster enthält. Im Beispieltext findet es (a, g(b, c)) und ((x), y) und ignoriert die nicht geschlossene Klammer am Ende. Mit regulären Ausdrücken in JavaScript lässt sich das nicht ausdrücken.

Probier (?<amount>\d+(?:\.\d+)?)\s+(?<cur>USD|EUR) mit der Ersetzung ${cur} $1, um in der zweiten Zeile Beträge und Währungscodes zu vertauschen.

Wissenswerte PCRE-Features

  • Possessive Quantoren (*+, ++, ?+) und atomare Gruppen ((?>...)) geben nie zurück, was sie getroffen haben, und verhindern so ausuferndes Backtracking.
  • \K setzt den Anfang des Treffers zurück – eine einfache Alternative zu Lookbehind.
  • Rekursion mit (?R), (?1) oder (?&name) trifft verschachtelte Strukturen.
  • Inline-Modifikatoren wie (?i) ändern das Verhalten für einen Teil des Musters.

Tipps

  • Setze das Muster in PHP zwischen Begrenzer wie /.../ oder ~...~ und wähl einen, der im Muster nicht vorkommt, damit du ihn nicht escapen musst.
  • Aktiviere u, wenn dein Text Buchstaben mit Akzenten, Umlaute oder CJK-Zeichen enthält, damit \w sie trifft.

FAQ

› Was ist der Unterschied zum JavaScript-Regex-Tester?

Diese Seite führt PCRE2 aus – die Engine hinter den preg_-Funktionen von PHP, Nginx, Apache und vielen anderen Tools –, kompiliert zu WebAssembly. Sie unterstützt Syntax, die JavaScript nicht kennt, etwa Rekursion mit (?R), possessive Quantoren wie a++, atomare Gruppen, \K, (?P<name>...)-Gruppen und die Modifikatoren x und U.

› Gebe ich die Begrenzer mit ein, also /pattern/i?

Nein. Gib nur das Muster ein und schalte Modifikatoren über die Checkboxen ein. In PHP entspricht `preg_match('/\d+/i', $s)` dem Muster `\d+` mit aktivierter Option „Groß-/Kleinschreibung ignorieren“.

› Warum bekomme ich "match limit exceeded"?

Manche Muster, etwa ^(a+)+$ auf einem langen, nicht passenden String, führen exponentiell viel Backtracking aus. Der Tester bricht nach fünf Millionen Schritten ab, damit die Seite reaktionsfähig bleibt. PHP hat eine ähnliche Schutzgrenze, pcre.backtrack_limit, und preg_match gibt false zurück, wenn sie erreicht wird.

› Wird mein Text hochgeladen?

Nein. Das PCRE2-WebAssembly-Modul wird einmal heruntergeladen, und alles läuft in deinem Browser.