Regex et correspondance de motifs

comparaison des moteurs regexPCRE2 et RE2 réels

Choisissez un moteur disponible, saisissez le motif et le texte, puis lancez le test local.

comparaison des moteurs regex

Motif

Saisissez le motif sans délimiteurs /. RE2 utilise toujours Unicode en interne.

Texte de test

Résultat

Saisissez du texte ou lancez un test.

Le motif et le texte sont traités dans un Worker local au navigateur, sans envoi au serveur.

Options

Saisissez du texte ou lancez un test.

Matrice des capacités

Seuls PCRE2 et RE2 sont exécutés. Les autres lignes sont informatives.

CibleExécutionRecherche arrièreRéférence arrièreLimite
PCRE2ExécutéOuiOuiPCRE2 WASM ; API PHP distincte.
RE2ExécutéNonNonRE2 WASM ; pas Go ni Rust.
PHP / PCRE2Cœur PCRE2 seulOuiOuiPHP preg_* ajoute délimiteurs et retours.
JavaRéférence seuleOuiOuiAucune JVM ici.
GoRéférence seuleNonNonGo regexp est une autre implémentation.
RustRéférence seuleNonNonRust regex est une autre implémentation.
.NETRéférence seuleOuiOuiAucune plateforme .NET ici.

Lorsqu’un motif PHP passe dans un filtre Go, un résultat vert dans un testeur JavaScript ne garantit rien. La comparaison des moteurs regex montre les réponses réelles des deux bibliothèques disponibles.

Un testeur de regex fondé sur JavaScript ne valide pas forcément une regex PCRE2 ou une regex Go. Les différences regex Java PHP sont décrites sans inventer une exécution Java.

Pourquoi la comparaison des moteurs regex

Une même entrée révèle où la compilation diverge.

Deux moteurs réellement exécutés

La comparaison des moteurs regex ne renomme pas JavaScript. Une recherche arrière réussit avec PCRE2 et déclenche une erreur de syntaxe avec RE2.

PCRE2 surligne un caractère tandis que RE2 affiche une erreur pour le même motif abstrait.

Aucun ancien résultat exportable

Modifier le motif, le texte, le moteur ou les options désactive la copie et le téléchargement jusqu’à un nouveau test.

Après modification de l’entrée, l’ancien rapport pâlit et son export est verrouillé.

Vérifier un motif sans confondre les moteurs

01

Saisir le motif seul

Écrivez (?<=a)b sans délimiteurs /. Un exemple affiche d’abord les champs remplacés ; une annulation reste possible après application.

  • Un motif vide ne produit un résultat qu’après une exécution volontaire.
02

Choisir le moteur réel

PCRE2 est sélectionné au départ ; RE2 possède son propre module WASM. i et m sont désactivés.

  • Le test est manuel, aussi accessible par Ctrl/Cmd+Entrée.
03

Lire positions et captures

Les indices commencent à zéro en unités UTF-16 et la fin est exclue. La liste ajoute 50 lignes ; le JSON contient tous les résultats valides.

  • Un délai dépassé ne crée pas d’export partiel.

Ce que rapporte un test

Erreurs authentiques

PCRE2 accepte les recherches arrière et références arrière ; RE2 les refuse sans substitution silencieuse par JavaScript.

Groupes et indices fiables

Les groupes numérotés et nommés apparaissent avec chaque correspondance ; les indices RE2 sont convertis après les emoji.

Exécution locale bornée

Le Worker peut être arrêté et expire après deux secondes. Un dépassement de taille invalide toute l’exécution.

Portée des résultats

PCRE2 n’est pas tout PHP
Le cœur PCRE2 fonctionne ici ; les délimiteurs et retours de preg_match propres à PHP ne sont pas reproduits.
RE2 n’est pas Go ni Rust
Ces bibliothèques partagent des idées de syntaxe, pas le même binaire. Les lignes Go et Rust sont documentaires.
Correspondances uniquement
Ni remplacement, ni extraction, ni découpage : les jetons de substitution varient selon les moteurs.
Une limite invalide le résultat
Maximum 100000 unités UTF-16 de texte, 2000 pour le motif, 1000 correspondances et deux secondes.

Questions sur la comparaison des moteurs regex

Quel moteur regex utilise PHP ?

La comparaison des moteurs regex sélectionne PCRE2 au départ. PHP utilise PCRE2, mais son API preg_* ajoute des règles non reproduites ici.

Pourquoi une regex fonctionne en JavaScript mais pas en Go ?

JavaScript peut accepter une recherche arrière que RE2 refuse. Pour Go, refaites la vérification dans regexp.

Go accepte-t-il les lookbehind ?

Non. RE2 renvoie une erreur de compilation et la page affiche cette erreur.

Peut-on utiliser la même regex en Java et en PHP ?

Pas forcément. Classes Unicode, options et captures changent selon l’implémentation ; testez dans le langage cible.

Mon texte de test est-il envoyé à un serveur ?

Le motif et le texte restent dans un Worker local. Seuls PCRE2 et RE2 sont exécutés.

Une autre question ?

Essayer la comparaison des moteurs regex

Chargez un exemple de différence, puis relancez le même texte avec PCRE2 et RE2.

Le motif et le texte ne sont pas envoyés automatiquement sur le réseau.