web-dev-qa-db-fra.com

Les expressions régulières Python renvoient true/false

Avec les expressions régulières Python, comment obtenir une variable True/False? Tous les retours Python sont:

<_sre.SRE_Match object at ...>
78
nobody

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(...):
89

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()

100
John La Rooy

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.

7
cory

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.

5
Gavin Anderegg

Voici ma méthode:

import re
p = re.complie(r'hi')
print bool(p.match("abcdefghijkl"))
0
Vaibhav Desai