Usando expresiones regulares de python, ¿cómo se puede obtener un verdadero/falso devuelto? Todas las devoluciones Python esexpresiones regulares de python devuelven verdadero/falso
<_sre.SRE_Match object at ...>
Usando expresiones regulares de python, ¿cómo se puede obtener un verdadero/falso devuelto? Todas las devoluciones Python esexpresiones regulares de python devuelven verdadero/falso
<_sre.SRE_Match object at ...>
Match
objetos son siempre verdaderas, y None
se devuelve si no hay ninguna coincidencia. Solo prueba la veracidad.
if re.match(...):
Ignacio Vazquez-Abrams es correcto. Pero para elaborar, re.match() devolverá None, que se evalúa como False, o un objeto de coincidencia, que siempre será True como dijo. Solo si desea información sobre la (s) parte (s) que coinciden con su expresión regular, necesita verificar el contenido del objeto coincidente.
Una forma de hacerlo es solo para comprobar el valor de retorno. Como obtiene <_sre.SRE_Match object at ...>
, significa que esto se evaluará como verdadero. Cuando la expresión regular no coincide, obtendrá el valor de retorno Ninguno, que se evalúa como falso.
import re
if re.search("c", "abcdef"):
print "hi"
Produce hi
como salida.
* siempre * obtienes un valor de retorno; 'None' es el valor predeterminado si no se devuelve nada explícitamente. –
Gracias - corrigió eso. Estaba siguiendo lo que vi en el REPL. –
Si realmente necesita True
o False
, sólo tiene que utilizar bool
>>> bool(re.search("hi", "abcdefghijkl"))
True
>>> bool(re.search("hi", "abcdefgijkl"))
False
Como otras respuestas han señalado, si usted está usando como una condición para una if
o while
, que se puede utilizar directamente sin envolviendo en bool()
valor 'bool' es necesario cuando la instrucción condicional contiene una operación aritmética booleana. por ejemplo: if (re.search ("a", "abc") & True): –
@AizzatSuhardi, '&' es una ** operación bit a bit **. 'y' sería la operación ** boolean **. –
gracias @JohnLaRooy. corrección: '(re.search (" a "," abc ") y True)' –
re.match (...) devolvería verdadero si la parte inicial de la cadena coincide con el patrón regular. Mientras que la búsqueda confirmará el patrón en cualquier lugar de la cadena. –
Puede ser más conveniente usar '' si re.match (...) es None: '' en su lugar – NuclearPeon
lo siento, ¿ha dirigido los comentarios en su respuesta? No está claro para mí, ¿te importa aclarar? –