DevToolPal
FR

Testeur de regex PCRE

Testez des expressions régulières compatibles PHP / Perl avec le vrai moteur PCRE2 : récursion, quantificateurs possessifs, \K et plus.

Traitement local, rien n'est envoyé

Options

Chaîne de test

0 caractères · 0 B

Résultat

Le résultat s'affiche ici

Ce que fait l’outil

Le testeur de regex PCRE confronte une expression régulière à votre texte avec la vraie bibliothèque PCRE2, le même moteur que PHP, les outils de style Perl et de nombreux serveurs web. Les correspondances sont surlignées, chacune est listée avec sa position et ses groupes de capture, et un remplacement facultatif montre le résultat d’une substitution façon preg_replace.

Tester avec le vrai moteur est important, car les expressions régulières PCRE et JavaScript diffèrent sur des points petits mais importants. Un motif qui fonctionne dans un testeur basé sur le navigateur peut refuser de compiler en PHP, ou correspondre à autre chose.

Mode d’emploi

  1. Tapez le motif sans délimiteurs dans Motif PCRE.
  2. Collez le texte à analyser dans Chaîne de test.
  3. Activez les modificateurs nécessaires : g pour toutes les correspondances (comme preg_match_all), i, m, s, x, U, et u pour des \w, \d et \b compatibles Unicode.
  4. Remplissez éventuellement Remplacer par pour prévisualiser la substitution. Utilisez $1 ou ${1} pour les groupes numérotés, ${name} pour les groupes nommés et $0 pour la correspondance entière.

Les motifs invalides affichent le message d’erreur de PCRE2 lui-même et la position dans le motif où il a abandonné.

Exemple

Le motif par défaut \((?:[^()]++|(?R))*\) trouve les parenthèses équilibrées. Il correspond à une paire de parenthèses contenant soit des caractères autres que des parenthèses, soit, récursivement, le motif complet. Sur le texte d’exemple, il trouve (a, g(b, c)) et ((x), y) et ignore la parenthèse non fermée à la fin. Les expressions régulières JavaScript ne peuvent pas exprimer cela.

Essayez (?<amount>\d+(?:\.\d+)?)\s+(?<cur>USD|EUR) avec le remplacement ${cur} $1 pour inverser montants et codes de devise sur la deuxième ligne.

Fonctionnalités PCRE à connaître

  • Les quantificateurs possessifs (*+, ++, ?+) et les groupes atomiques ((?>...)) ne rendent jamais ce qu’ils ont capturé, ce qui évite les retours arrière incontrôlés.
  • \K réinitialise le début de la correspondance, une alternative simple au lookbehind.
  • La récursion avec (?R), (?1) ou (?&name) reconnaît les structures imbriquées.
  • Les modificateurs en ligne comme (?i) changent le comportement d’une partie du motif.

Astuces

  • En PHP, entourez le motif de délimiteurs comme /.../ ou ~...~, en choisissant un caractère absent du motif pour ne pas avoir à l’échapper.
  • Activez u quand votre texte contient des lettres accentuées ou des caractères CJK, pour que \w les reconnaisse.

FAQ

› En quoi est-ce différent du testeur de regex JavaScript ?

Cette page exécute PCRE2, le moteur derrière les fonctions preg_ de PHP, Nginx, Apache et bien d'autres outils, compilé en WebAssembly. Il prend en charge une syntaxe que JavaScript ne connaît pas : récursion avec (?R), quantificateurs possessifs comme a++, groupes atomiques, \K, groupes (?P<name>...) et modificateurs x et U.

› Dois-je taper les délimiteurs, comme /pattern/i ?

Non. Saisissez uniquement le motif et activez les modificateurs avec les cases à cocher. En PHP, `preg_match('/\d+/i', $s)` correspond au motif `\d+` avec Ignorer la casse activé.

› Pourquoi ai-je obtenu « match limit exceeded » ?

Certains motifs, comme ^(a+)+$ sur une longue chaîne qui ne correspond pas, font un nombre exponentiel de retours arrière. Le testeur s'arrête après cinq millions d'étapes pour que la page reste réactive. PHP a une protection similaire, pcre.backtrack_limit, et preg_match renvoie false lorsqu'elle est atteinte.

› Mon texte est-il envoyé ?

Non. Le module WebAssembly PCRE2 est téléchargé une fois et tout s'exécute dans votre navigateur.