← retour aux snippets

re.escape: éviter l'injection dans des regex

Échapper correctement des fragments dynamiques insérés dans un motif regex.

python regex #re#escape#security

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.