Expression régulière expliquée
Regex Explainer
Décompose une expression régulière en un arbre commenté, pour que vous lisiez ce que chaque morceau reconnaît réellement.
Décompose une expression régulière en arbre et dit ce que fait chaque morceau — chaque groupe, quantificateur, classe et assertion, imbriqués comme l'est le motif. C'est le même écran que le testeur, ouvert sur son onglet d'explication, parce que lire un motif et l'exécuter sont la même activité.
Motif
peut correspondre n’importe où dans la chaîne, 2 groupes de capture.
Ce que fait chaque morceau
([\w.+-]+)@([\w-]+\.[\w.-]+)Dans l’ordre
Chacun de ces éléments doit correspondre, l’un après l’autre, sans rien entre eux.
([\w.+-]+)Groupe de capture 1
Correspond au motif qu’il contient et retient le texte, accessible par `match[1]` et par `$1` dans un remplacement.
[\w.+-]+Répété +
Répète une fois ou plus, le plus possible, et ne rend du terrain que si la suite échoue.
[\w.+-]N’importe quel caractère de cet ensemble
Correspond à exactement un caractère, celui des suivants qui vient en premier dans l’entrée.
Dans une classe, `.` est un point. Il ne veut pas dire « n’importe quel caractère » ici, et l’échapper n’y change rien.
\wN’importe quel caractère de mot
Exactement `[A-Za-z0-9_]`.
C’est uniquement ASCII. Pour une expression régulière JavaScript, `é`, `한` et `ß` ne sont pas des caractères de mot, donc `\w+` ne correspond ni à un mot coréen ni à un mot accentué.
.Le caractère “.” (U+002E)
Comparé exactement, casse comprise.
+Le caractère “+” (U+002B)
Comparé exactement, casse comprise.
-Le caractère “-” (U+002D)
Comparé exactement, casse comprise.
@Le caractère “@” (U+0040)
Comparé exactement, casse comprise.
([\w-]+\.[\w.-]+)Groupe de capture 2
Correspond au motif qu’il contient et retient le texte, accessible par `match[2]` et par `$2` dans un remplacement.
[\w-]+\.[\w.-]+Dans l’ordre
Chacun de ces éléments doit correspondre, l’un après l’autre, sans rien entre eux.
[\w-]+Répété +
Répète une fois ou plus, le plus possible, et ne rend du terrain que si la suite échoue.
[\w-]N’importe quel caractère de cet ensemble
Correspond à exactement un caractère, celui des suivants qui vient en premier dans l’entrée.
\wN’importe quel caractère de mot
Exactement `[A-Za-z0-9_]`.
C’est uniquement ASCII. Pour une expression régulière JavaScript, `é`, `한` et `ß` ne sont pas des caractères de mot, donc `\w+` ne correspond ni à un mot coréen ni à un mot accentué.
-Le caractère “-” (U+002D)
Comparé exactement, casse comprise.
\.Le caractère “.” (U+002E)
Comparé exactement, casse comprise.
La barre oblique inverse est inutile ici : à cet endroit, ce caractère n’a aucune signification particulière.
[\w.-]+Répété +
Répète une fois ou plus, le plus possible, et ne rend du terrain que si la suite échoue.
[\w.-]N’importe quel caractère de cet ensemble
Correspond à exactement un caractère, celui des suivants qui vient en premier dans l’entrée.
Dans une classe, `.` est un point. Il ne veut pas dire « n’importe quel caractère » ici, et l’échapper n’y change rien.
\wN’importe quel caractère de mot
Exactement `[A-Za-z0-9_]`.
C’est uniquement ASCII. Pour une expression régulière JavaScript, `é`, `한` et `ß` ne sont pas des caractères de mot, donc `\w+` ne correspond ni à un mot coréen ni à un mot accentué.
.Le caractère “.” (U+002E)
Comparé exactement, casse comprise.
-Le caractère “-” (U+002D)
Comparé exactement, casse comprise.
Drapeaux
- g —
global - Trouve toutes les correspondances au lieu de s’arrêter à la première. En contrepartie, `.test()` et `.exec()` déplacent `lastIndex` entre deux appels, ce qui est la cause habituelle du « un appel sur deux échoue ».
Comment s’en servir
Collez le motif dont vous avez hérité
Celui du fichier de configuration que personne ne se souvient d'avoir écrit. Il est analysé plutôt que reconnu par motif : la décomposition suit donc la vraie structure.
Descendez le long de l'arbre
Chaque nœud montre le fragment source, ce qu'il est et ce qu'il fait. Des remarques signalent les parties qui surprennent souvent — un quantificateur imbriqué, un groupe qui capture alors qu'il n'en avait pas besoin.
Passez sur Tester pour vérifier votre lecture
Le motif est repris. Comprendre une regex et confirmer qu'elle fait ce que vous croyez sont deux étapes différentes, et la seconde est la moins chère.
Questions fréquentes
Que veut dire l'avertissement sur un quantificateur imbriqué ?
Quelque chose comme `(a+)+` donne au moteur un nombre exponentiel de façons de découper le même texte : une entrée qui ne correspond pas peut donc prendre plus longtemps que l'âge de l'univers. C'est la forme qui se cache derrière la plupart des dénis de service par expression régulière.
Pourquoi me dit-il qu'un groupe capture ?
Parce qu'un groupe capturant dont vous ne vous servez pas coûte un emplacement et décale la numérotation de ceux dont vous vous servez. `(?:…)` groupe sans capturer, ce qui garde `$1` pointé sur ce que vous vouliez.
Explique-t-il aussi les drapeaux ?
Oui, dans un panneau à part — chaque drapeau que vous avez activé, son nom et ce qu'il change. `m` et `s` méritent particulièrement d'être lus, car le nom de chacun évoque le comportement de l'autre.
À alimenter depuis
Testeur d’expressions régulières
Regex Tester
Teste une expression régulière sur un texte d’exemple, avec surlignage des correspondances en direct et liste des groupes de capture.
Formateur et validateur JSON
JSON Formatter & Validator
Met en forme, minifie et valide du JSON en désignant la ligne et la colonne exactes de l’erreur de syntaxe.
Formateur et validateur YAML
YAML Formatter & Validator
Réindente le YAML de façon cohérente, le valide et signale les tabulations et les ancres qui font échouer les analyseurs.
Formateur et validateur TOML
TOML Formatter & Validator
Met en forme et valide du TOML, en normalisant l’ordre des tables et le style des tables en ligne.
Ensuite
Ces outils acceptent ce que celui-ci produit : le résultat peut y aller directement.
Rechercher et remplacer
Find & Replace
Remplace du texte au littéral, au mot entier ou par expression régulière, avec groupes de capture et aperçu de chaque occurrence.
Testeur d’expressions régulières
Regex Tester
Teste une expression régulière sur un texte d’exemple, avec surlignage des correspondances en direct et liste des groupes de capture.
Extraire par motif
Pattern Extractor
Sort d’un bloc de texte toutes les adresses e-mail, URL, nombres, dates ou correspondances d’une expression régulière de votre choix, sous forme de liste.
Encodeur et décodeur Base64
Base64 Encoder & Decoder
Encode et décode en Base64 et en Base64URL, pour du texte comme pour des fichiers, avec un traitement correct de l’UTF-8.
curl vers code
curl to Code
Traduit une commande curl en fetch, axios, requests Python, Go, PHP ou PowerShell.
Hachage de texte
Text Hash
Calcule le MD5, le SHA-1, le SHA-256, le SHA-384, le SHA-512 et le CRC-32 d’une chaîne, avec sortie en majuscules ou en Base64.