Usando expressões regulares Python, como você pode obter um True
/ False
retornado? Todos os retornos do Python são:
<_sre.SRE_Match object at ...>
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 dissore
foi projetado assim? Se osmatch
objetos são sempre verdadeiros, por que simplesmente não retornaTrue
em primeiro lugar, visto que sempre precisamos saber se a resposta é verdadeira ou falsa de qualquer maneira?Se você realmente precisa
True
ouFalse
, basta usarbool
Como outras respostas apontaram, se você estiver usando-o apenas como uma condição para um
if
ouwhile
, você pode usá-lo diretamente, sem envolver embool()
fonte
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á ouNone
, que avalia paraFalse
, ou um objeto de correspondência, que será sempreTrue
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.fonte
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.Produz
hi
como saída.fonte
None
é o padrão se nada for retornado explicitamente.Aqui está o meu método:
fonte
match
parasearch
, ele retornará TrueVocê pode usar
re.match()
oure.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, enquantore.search()
verifica se há uma correspondência em qualquer lugar da string (é isso que o Perl faz por padrão). consulte issofonte