Respostas:
Match
objetos são sempre verdadeiros e None
são retornados se não houver correspondência. Apenas teste a veracidade.
if re.match(...):
if re.match(...) is None:
vez disso
re
foi projetado assim? Se os match
objetos são sempre verdadeiros, por que simplesmente não retorna True
em primeiro lugar, visto que sempre precisamos saber se a resposta é verdadeira ou falsa de qualquer maneira?
Se você realmente precisa True
ou False
, basta usarbool
>>> bool(re.search("hi", "abcdefghijkl"))
True
>>> bool(re.search("hi", "abcdefgijkl"))
False
Como outras respostas apontaram, se você estiver usando-o apenas como uma condição para um if
ou while
, você pode usá-lo diretamente, sem envolver embool()
bool
valor é necessário quando a instrução condicional contém operação aritmética booleana. Ex: if (re.search ("a", "abc") & True):
&
é uma operação bit a bit . and
seria a operação booleana .
(re.search("a","abc") and True)
bool
torna a intenção do programador clara para o leitor.
Ignacio Vazquez-Abrams está correto. Mas para elaborar, re.match()
retornará ou None
, que avalia para False
, ou um objeto de correspondência, que será sempre True
como ele disse. Somente se você quiser informações sobre as partes que correspondem à sua expressão regular, você precisa verificar o conteúdo do objeto de correspondência.
Uma maneira de fazer isso é apenas testar o valor de retorno. Porque você está entendendo <_sre.SRE_Match object at ...>
, significa que isso será avaliado como verdadeiro. Quando a expressão regular não for correspondida, você retornará o valor None, que é avaliado como false.
import re
if re.search("c", "abcdef"):
print "hi"
Produz hi
como saída.
None
é o padrão se nada for retornado explicitamente.
Você pode usar re.match()
ou re.search()
. Python oferece duas operações primitivas diferentes baseadas em expressões regulares: re.match()
verifica se há uma correspondência apenas no início da string, enquanto re.search()
verifica se há uma correspondência em qualquer lugar da string (é isso que o Perl faz por padrão). consulte isso