Aller au contenu principal

Expressions régulières

Construisez un motif à partir de quelques éléments lisibles :

FormeSignification
.tout caractère sauf, par défaut, un saut de ligne
^ / $ancrages de début / fin
[abc] / [^abc]ensemble de caractères autorisés / exclus
*, +, ?, {m,n}répétition
(…) / (?:…)groupe capturant / non capturant
\bfrontière de mot dans la syntaxe re de Python

Dans l’exemple ci-dessous, [A-Z] reconnaît une lettre ASCII majuscule, \d{3} reconnaît trois chiffres et \b marque une frontière de mot : codes vaut donc ["A-104", "B-208"]. Le drapeau (?i) rend le remplacement insensible à la casse ; updated vaut "item A-104, item B-208". is_code vaut True, car toute la chaîne "A-104" correspond au motif. Le préfixe r évite que l’échappement des chaînes Python masque les antislashs de l’expression :

import re

text = "Order A-104, order B-208"
codes = re.findall(r"\b[A-Z]-\d{3}\b", text)
updated = re.sub(r"(?i)\border\b", "item", text)
is_code = re.fullmatch(r"[A-Z]-\d{3}", "A-104") is not None

Choisissez délibérément l'opération : search() trouve la première correspondance n'importe où, fullmatch() exige que toute l'entrée corresponde, findall() collecte les correspondances et sub() les remplace. Avant d'appliquer un motif à des données non fiables, testez des correspondances et non-correspondances représentatives, une entrée vide, Unicode et des entrées exceptionnellement longues.

La syntaxe varie entre Python, JavaScript, les éditeurs et les outils en ligne de commande. La documentation Python de re ne fait autorité que pour Python ; utilisez RegExr comme brouillon interactif, pas comme spécification universelle.

Dans regex101, choisir le moteur Python et essayer des chaînes qui correspondent ou non à l’exemple. Examiner l’explication du motif, ajouter des parenthèses pour capturer la lettre et les chiffres du code, puis ajouter un chiffre pour tester une limite. Le choix du moteur compte : un autre dialecte peut produire un résultat différent de Python.

Explorer les liensOuvrir le réseau