137 votes

Les expressions régulières Python renvoient vrai/faux

En utilisant des expressions régulières Python, comment pouvez-vous obtenir un True / False renvoyé ? Tous les retours Python sont :

 <_sre.SRE_Match object at ...>

176voto

gnibbler Points 103484

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 souligné, si vous l'utilisez simplement comme condition pour un if ou while , vous pouvez l'utiliser directement sans encapsuler dans bool()

165voto

Ignacio Vazquez-Abrams Points 312628

Match sont toujours vrais et None est renvoyé s'il n'y a pas de correspondance. Testez simplement la véracité.

 if re.match(...):

10voto

cory Points 331

Ignacio Vazquez-Abrams a raison. Mais pour élaborer, re.match() renverra soit None , qui évalue à False , soit un objet de correspondance, qui sera toujours True as il a dit. Ce n'est que si vous voulez des informations sur la ou les parties qui correspondent à votre expression régulière que vous devez vérifier le contenu de l'objet match.

8voto

Vaibhav Desai Points 1489

Voici ma méthode :

 import re
# Compile
p = re.compile(r'hi')
# Match and print
print bool(p.match("abcdefghijkl"))

7voto

Gavin Anderegg Points 2119

Une façon de le faire est simplement de tester par rapport à la valeur de retour. Parce que vous obtenez <_sre.SRE_Match object at ...> cela signifie que cela sera évalué comme vrai. Lorsque l'expression régulière ne correspond pas, vous renverrez la valeur None, qui est évaluée à false.

 import re

if re.search("c", "abcdef"):
    print "hi"

Produit hi en sortie.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X