Aller au contenu
helpyself

Explicateur de regex

Local only — nothing is uploaded unless you save or share it.

Un explicateur de regex : collez un motif et lisez ce que fait chacune de ses parties, en français.

  1. Collez votre expression régulière, avec ou sans les barres obliques
  2. Lisez la décomposition de haut en bas
  3. Suivez l'indentation pour voir à quoi s'applique chaque quantificateur
Avec ou sans les barres obliques. /\d{4}-\d{2}/g et \d{4}-\d{2} fonctionnent tous les deux.
Enregistrer cet outil

Gardez Explicateur de regex sous la main

Ajouter aux favoris

À propos de cet outil

Un explicateur de regex démonte une expression régulière et décrit chaque pièce avec des mots ordinaires. Collez un motif — avec ou sans les barres obliques et les drapeaux qui l'entourent — et vous obtenez un plan : ce que chaque élément reconnaît, combien de fois il peut se répéter, et quelles parties sont capturées. Ce qui rend une regex illisible, ce sont rarement les pièces prises séparément. Presque tout le monde sait ce qu'est \d. Ce qui est vraiment difficile à voir, c'est ce qui s'applique à quoi : si un signe plus répète un caractère ou un groupe entier, où commence et où finit une alternative, et ce qu'une assertion avant regarde réellement. L'explication est donc imbriquée, et l'imbrication est tout l'enjeu — l'indentation répond à cette question avant le moindre mot. Il lit le motif au lieu de l'exécuter. Cela veut dire deux choses utiles. Un motif qui mettrait des minutes à s'exécuter contre une entrée hostile est expliqué instantanément, parce que le lire ne coûte qu'une fraction du travail. Et un motif qui ne compile pas est expliqué quand même : si vous avez collé quelque chose parce que c'est cassé, s'entendre dire « SyntaxError » vous remet au point de départ — les problèmes sont donc signalés à côté de la décomposition et non à sa place. Rien n'est envoyé nulle part. Les motifs portent souvent des indices sur les données pour lesquelles ils ont été écrits, et ceux-là restent dans votre navigateur.

Questions fréquentes

Que signifie cette regex ?

Collez-la et lisez le plan. Chaque ligne nomme une pièce du motif et dit ce qu'elle reconnaît ; les lignes indentées sont à l'intérieur du groupe au-dessus d'elles. Si un quantificateur comme + ou {2,4} s'applique à une pièce, c'est indiqué sur la même ligne, et c'est justement ce que les gens lisent le plus souvent de travers.

Peut-il expliquer une expression régulière écrite par quelqu'un d'autre ?

C'est à cela qu'il sert. Collez le motif et vous obtenez une décomposition pièce par pièce — ce groupe, ce quantificateur, cette classe de caractères — plutôt qu'une phrase de résumé. Traduire une regex en français n'est utile qu'à cette finesse-là, car la partie que vous avez mal lue est en général un seul élément, et une paraphrase du motif entier cache précisément l'élément sur lequel vous vous êtes trompé.

Puis-je coller un motif avec les barres obliques et les drapeaux ?

Oui. /\d+/gi et \d+ sont tous deux compris. Si des drapeaux sont présents, ils sont listés avec ce que chacun fait, puisque g, i, m et s modifient le comportement du motif davantage que la plupart de ses caractères.

Explique-t-il une regex qui ne fonctionne pas ?

Oui, et c'est délibéré. Un crochet non fermé, un quantificateur égaré ou un compte impossible comme {5,2} est signalé comme un problème, et le reste du motif est expliqué malgré tout. Se voir remettre un simple message d'erreur n'aide en rien quand la raison de votre venue est précisément que le motif est cassé.

Est-ce la même chose que tester une regex ?

Non. Ceci lit le motif et vous dit ce qu'il énonce ; un testeur l'exécute sur un texte et vous montre ce qu'il a reconnu. Ils répondent à des questions différentes et sont souvent utiles ensemble — notre testeur de regex est à un clic.

Pourquoi ab+ ne répète-t-il pas l'ensemble ?

Parce qu'un quantificateur s'applique au seul élément qui le précède immédiatement : ab+ est donc un a suivi d'un ou plusieurs b. Pour répéter les deux, il faut un groupe : (ab)+. C'est la mauvaise lecture la plus courante d'une regex, et c'est pourquoi le plan montre toujours un quantificateur attaché exactement à la pièce qu'il gouverne.

Quelle différence entre un groupe capturant et (?:...) ?

Un groupe capturant conserve ce qu'il a reconnu pour que vous puissiez y faire référence ensuite, par numéro ou par nom. (?:...) regroupe des caractères pour la structure — afin qu'un quantificateur ou une alternative puisse s'appliquer à l'ensemble — sans conserver le résultat. Employer un groupe non capturant là où la valeur ne vous sert pas garde la numérotation des autres bien rangée.

Aidez-nous à améliorer cet outil

Un bug, une envie de changement, ou un outil qui vous manque ?

/regex-explainer

↑↓ pour se déplacer · Entrée pour ouvrir · Échap pour fermer