Testeur de regex
Testez des expressions régulières avec surlignage des correspondances et groupes
À propos de cet outil
Écrivez un motif, collez un texte d’exemple, et chaque correspondance est surlignée pendant la frappe — avec les groupes de capture, les groupes nommés et les positions listés en dessous. Le testeur utilise le moteur RegExp de JavaScript, donc le comportement correspond exactement à ce que feront Node.js et les navigateurs, y compris le lookbehind, les groupes nommés et les échappements de propriétés Unicode.
Les drapeaux se basculent lettre par lettre (g, i, m, s, u, y, d) et le motif est compilé à chaque frappe ; les erreurs de syntaxe apparaissent immédiatement avec le message du moteur lui-même, plutôt qu’après un clic sur un bouton. Les motifs à correspondance vide comme a* sont gérés sans danger, et les entrées incontrôlées sont plafonnées à 10 000 correspondances, pour qu’un .* égaré ne puisse pas geler l’onglet.
Les dialectes regex diffèrent d’un moteur à l’autre — un motif qui fonctionne ici peut demander des ajustements pour PCRE, RE2 ou le module re de Python, surtout autour du support du lookbehind, des quantificateurs possessifs et des drapeaux en ligne.
Questions fréquentes
- Quelle saveur de regex ce testeur utilise-t-il ?
- ECMAScript (JavaScript), telle qu’implémentée par votre propre navigateur. Elle prend en charge le lookahead, le lookbehind, les groupes de capture nommés, les rétroréférences et les échappements de propriétés Unicode comme \p{Letter} (avec le drapeau u). Elle ne prend pas en charge la syntaxe propre à PCRE, comme les quantificateurs possessifs ou la récursion.
- Pourquoi mon motif correspond-il à tout / à rien ?
- Les deux causes classiques : un métacaractère non échappé (. correspond à n’importe quel caractère — échappez-le en \. pour un point littéral), ou un drapeau g oublié mentalement — ce testeur trouve toujours toutes les correspondances, mais votre code ne trouvera que la première si g n’est pas activé.
- Que sont les groupes de capture nommés ?
- La syntaxe (?<name>...) étiquette un groupe pour lire les correspondances par nom plutôt que par position : match.groups.name en JavaScript. Le panneau des groupes sous les correspondances montre les captures numérotées et nommées pour chaque correspondance.
- Une regex écrite ici fonctionnera-t-elle telle quelle en Python ou en Go ?
- Souvent, mais pas toujours. Classes de caractères, quantificateurs et ancres sont portables ; le lookbehind, la syntaxe des groupes nommés (Python utilise (?P<name>...)) et les drapeaux en ligne diffèrent. Le moteur RE2 de Go rejette en plus totalement les rétroréférences et le lookaround.