objectif
Échapper correctement des fragments dynamiques insérés dans un motif regex.
code minimal
import re
user = "a+b?"
pat = re.compile("^" + re.escape(user) + "$")
print(bool(pat.fullmatch("a+b?"))) # attendu: True
utilisation
import re
needles = ["a.b", "x*y"]
pat = re.compile("|".join(re.escape(n) for n in needles))
print(bool(pat.search("xx a.b yy")))
variante(s) utile(s)
import re
print(re.escape(".*") != ".*")
notes
- Toujours échapper les parties non contrôlées pour éviter des motifs dangereux.
- Combinez avec des ancres ^ $ et fullmatch pour des validations strictes.