Regex et correspondance de motifs

testeur regex Pythonvoir le résultat réel de re

Saisissez un motif et un texte, puis lancez explicitement la recherche, la correspondance totale ou la substitution Python.

testeur regex Python

Motif

Texte de test

Résultat

Saisissez du texte ou lancez un test.

Le motif et le texte restent dans ce navigateur. Les fichiers Python ne se chargent qu’au premier lancement.

Options

i, m, s, x, a une fois chacun ; pas de drapeau JavaScript g.
  • i — Ignorer la casse
  • m — ^ et $ aux limites de ligne
  • s — Le point inclut le saut de ligne
  • x — Espaces et commentaires dans le motif
  • a — Classes de caractères ASCII

Environnement Python : chargé au premier test

Limites : motif 2 000, texte 100 000, remplacement 10 000 unités UTF-16 ; 10 000 résultats, 1 million en sortie et 4 millions dans le rapport. Arrêt après 2 secondes.

Saisissez du texte ou lancez un test.

Une expression peut fonctionner dans un outil JavaScript et échouer dans Python. Ce testeur regex Python exécute CPython re pour vérifier les groupes nommés, les options et les références de remplacement selon le véritable moteur.

Un testeur regex en ligne est plus utile si l’on distingue finditer, search et fullmatch. Pour les expressions régulières Python, les groupes capturés sont repérés en points de code Unicode et la substitution emploie \g<name>, pas $1.

Pourquoi choisir ce testeur regex Python

Voir la capture exacte

Le testeur regex Python sépare la correspondance entière des groupes numérotés et nommés. Un groupe absent vaut null avec (-1, -1), tandis qu’un groupe ayant capturé une chaîne vide conserve cette valeur vide.

Une grande zone bleue contient deux captures colorées reliées à deux cartes de résultat.

Comparer la substitution sans modifier le texte

Une formule comme \g<nom> et \g<prenom> est développée par re.subn dans une sortie distincte. Zéro comme limite de substitutions signifie toutes les occurrences; la source reste intacte.

Deux segments colorés changent d’ordre dans l’aperçu de droite, tandis que le texte source reste à gauche.

Vérifier les détails moins évidents de re

01

Choisir la portée de la recherche

finditer liste les correspondances sans chevauchement, search prend la première et fullmatch exige que tout le texte corresponde. Aucun drapeau JavaScript g n’est nécessaire.

02

Régler les options avant le calcul

i, m, s, x et a sont les options de Python re. m modifie ^ et $ aux limites des lignes; s permet au point de franchir un saut de ligne. Python se charge au premier lancement manuel.

03

Lire les positions avant d’exporter

Les indices commencent à zéro, excluent la fin et comptent les points de code Unicode. Dans A😀B, B commence à l’indice Python 2. Ctrl/Cmd + Entrée relance le test.

Les informations rendues par chaque test

Véritable moteur CPython re

Ce testeur regex Python charge Pyodide dans un Worker et affiche la version réelle de Python. Il ne présente pas le RegExp JavaScript comme un moteur Python.

Groupes et bornes précises

Chaque correspondance contient le groupe 0, les groupes numérotés, leurs noms, valeurs et positions. Les indices sont convertis pour surligner correctement un texte contenant des emoji.

Substitution suivant Python

Le mode re.subn développe \1 et \g<name>. Une formule vide supprime les occurrences et $1 reste du texte ordinaire. La source n’est jamais réécrite.

Rapport complet uniquement

Un résultat terminé peut être copié ou téléchargé en JSON avec le motif, les options, l’opération, la version et toutes les correspondances. La sortie substituée peut aussi être enregistrée.

Ce que couvre cette exécution

Un seul moteur
Le testeur regex Python traite des chaînes Unicode avec CPython re. Il ne bascule ni vers PCRE2, ni vers JavaScript, ni vers le module tiers regex.
Lancement manuel
Les motifs coûteux ne partent que sur demande. Après chargement de Python, une exécution dépassant deux secondes termine le Worker; aucun résultat partiel n’est annoncé comme absence de correspondance.
Options Python seulement
i, m, s, x et a sont admis une fois chacun. Les indicateurs JavaScript g, u et y ne sont pas proposés; finditer recherche toutes les occurrences.
Limites mesurables
Motif: 2 000 unités UTF-16; texte: 100 000; remplacement: 10 000. Plus de 10 000 résultats, une sortie ou un rapport trop volumineux invalident toute l’exécution.
Pas de code arbitraire
Seules les opérations re fixées sont exécutées. Pas de script Python fourni par l’utilisateur, de fichier à importer, d’URL à charger ou de lien partageant le texte.
Prévisualisation seulement
re.subn produit une sortie distincte. Exemple et Effacer changent les entrées après confirmation, avec une possibilité d’annulation.

Questions sur le testeur regex Python

Pourquoi un motif marche-t-il dans regex101 mais pas dans Python ?

Vérifiez le moteur sélectionné dans regex101: PCRE2 peut être actif. Ici, CPython re exige notamment la forme (?P<name>...) pour nommer un groupe.

Puis-je tester un remplacement Python re.sub ?

Oui. Sélectionnez Substitution et saisissez \g<name> ou \1. $1 ne désigne pas un groupe en Python; le résultat reste un aperçu séparé.

Puis-je voir les correspondances et groupes Python en ligne ?

Oui. Les correspondances sont surlignées, avec valeurs et positions des groupes. Une correspondance de largeur nulle reçoit un repère visible.

Pourquoi .*? est-il parfois préférable à .* ?

La version non gourmande essaie d’abord la plus courte portion possible, l’autre la plus longue. Aucune ne garantit un calcul rapide: testez des cas limites.

Quelle différence entre (...) et (?:...) ?

Les deux regroupent le motif, mais seul (...) crée un groupe capturé numéroté réutilisable dans une substitution. (?:...) ne prend pas de numéro.

Une autre question ?

Essayez le testeur regex Python sur un cas limite

Confrontez un exemple positif à un exemple négatif, puis vérifiez les captures et la version du moteur avant export.