En utilisant les expressions régulières Python, comment obtenir un True
/ False
renvoyé? Tous les retours Python sont:
<_sre.SRE_Match object at ...>
Match
objets sont toujours vrais et None
sont renvoyés s'il n'y a pas de correspondance. Testez simplement la justesse.
if re.match(...):
if re.match(...) is None:
placere
est conçu comme ça? Si lesmatch
objets sont toujours vrais, pourquoi ne revient-il pas simplementTrue
à la première place, étant donné que nous avons toujours besoin de savoir si la réponse est vraie ou fausse de toute façon?Si vous avez vraiment besoin
True
ouFalse
, utilisez simplementbool
Comme d'autres réponses l'ont souligné, si vous ne l'utilisez que comme condition pour un
if
ouwhile
, vous pouvez l'utiliser directement sans l'envelopperbool()
la source
bool
value est nécessaire lorsque l'instruction conditionnelle contient une opération arithmétique booléenne. par exemple: if (re.search ("a", "abc") & True):&
est une opération au niveau du bit .and
serait l' opération booléenne .(re.search("a","abc") and True)
bool
rend clairement l'intention du programmeur pour le lecteur.Ignacio Vazquez-Abrams a raison. Mais pour élaborer,
re.match()
retournera soitNone
, qui évalue àFalse
, soit un objet de correspondance, qui sera toujoursTrue
comme il l'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 de correspondance.la source
Une façon de procéder consiste simplement à effectuer un test par rapport à la valeur de retour. Parce que vous comprenez
<_sre.SRE_Match object at ...>
cela signifie que cela sera évalué comme vrai. Lorsque l'expression régulière ne correspond pas, vous obtenez la valeur de retour None, qui prend la valeur false.Produit
hi
comme sortie.la source
None
est la valeur par défaut si rien n'est explicitement renvoyé.Voici ma méthode:
la source
match
ensearch
, il retournera TrueVous pouvez utiliser
re.match()
oure.search()
. Python propose deux opérations primitives différentes basées sur des expressions régulières:re.match()
vérifie une correspondance uniquement au début de la chaîne, tandis quere.search()
vérifie une correspondance n'importe où dans la chaîne (c'est ce que Perl fait par défaut). référer cecila source