/ / correspondant à un seul (regex avec quantificateur et regroupement en python) - regex

ne correspondant qu'à un seul (regex avec quantifier et grouper en python) - regex

regex avec quantificateur et groupement en python

p = re.compile("[29]{1}")
p.match("29")

pourquoi 29 correspond à p? Je pensais l’avoir explicitement dit "s [29] (2 ou 9) avec un quantificateur {1}. Ne devrait-il pas être juste JUSQU'À 2 OU 9? Ou cela correspond-il au premier groupe sans se soucier du reste Merci!

Réponses:

2 pour la réponse № 1

Il correspond car il correspond à la sous-chaîne "2". La façon dont regex fonctionne est qu'il renvoie true s'il existe toute sous-chaîne à l'intérieur de la chaîne qui correspond. Le regex que vous utilisez correspondrait à "46657467562374746", car il contient un "2". Si vous avez besoin que tout soit identique du début à la fin, vous devez utiliser des ancres:

p = re.compile("^[29]{1}$")
p.match("29")

Le chapeau (^) représente le début de la chaîne et le dollar ($) représente la fin de la chaîne. Alors maintenant, cela ne correspond que si le entier sting est un simple 2 ou un simple 9, au lieu de juste contenant a 2 ou 9.