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.

Explorer les liensOuvrir le réseau