← retour aux snippets

re.sub: substitution avec fonction et groupes nommés

Remplacer dynamiquement en utilisant une fonction de rappel et des groupes.

python text #re#regex#sub

objectif

Remplacer dynamiquement en utilisant une fonction de rappel et des groupes.

code minimal

import re
s = "name=ada, age=30"
pat = re.compile(r"name=(?P<name>\w+)")
out = pat.sub(lambda m: f"user={m.group('name').upper()}", s)
print("user=ADA" in out)  # attendu: True

utilisation

import re
s = "a1 b2"
out = re.sub(r"(\d)", lambda m: str(int(m.group(1))+1), s)
print(out == "a2 b3")

variante(s) utile(s)

import re
print(re.subn(r"x", "y", "xxy")[1] == 2)  # nombre de remplacements

notes

  • subn renvoie (texte, nombre_remplacements).
  • Précompilez vos patterns pour des appels répétés.