Avec les expressions régulières Python, comment obtenir une variable True
/False
? Tous les retours Python sont:
<_sre.SRE_Match object at ...>
Les objets Match
sont toujours vrais, et None
est renvoyé s'il n'y a pas de correspondance. Juste tester la justesse.
if re.match(...):
Si vous avez vraiment besoin de True
ou False
, utilisez simplement bool
>>> bool(re.search("hi", "abcdefghijkl"))
True
>>> bool(re.search("hi", "abcdefgijkl"))
False
Comme d'autres réponses l'ont fait remarquer, si vous l'utilisez simplement comme condition d'une variable if
ou while
, vous pouvez l'utiliser directement sans insérer bool()
Ignacio Vazquez-Abrams est correct. Mais pour préciser, re.match()
retournera soit None
, qui vaut False
, soit un objet match, qui sera toujours True
comme il l’a dit. Si vous souhaitez des informations sur la ou les parties correspondant à votre expression régulière, vous devez extraire le contenu de l'objet correspondant.
Une façon de faire est simplement de tester la valeur de retour. Parce que vous obtenez <_sre.SRE_Match object at ...>
, cela signifie que cela sera évalué comme étant vrai. Lorsque l'expression régulière ne correspond pas, vous obtenez la valeur de retour None, évaluée à false.
import re
if re.search("c", "abcdef"):
print "hi"
Produit hi
en sortie.
Voici ma méthode:
import re
p = re.complie(r'hi')
print bool(p.match("abcdefghijkl"))