Usando expresiones regulares de Python, ¿cómo se puede obtener un True
/ False
devuelto? Todos los retornos de Python son:
<_sre.SRE_Match object at ...>
Match
los objetos siempre son verdaderos y None
se devuelven si no hay coincidencia. Solo prueba la veracidad.
if re.match(...):
if re.match(...) is None:
en su lugarre
está diseñado así? Si losmatch
objetos siempre son verdaderos, ¿por qué no regresanTrue
en primer lugar, dado que siempre necesitamos saber si la respuesta es verdadera o falsa de todos modos?Si realmente necesita
True
oFalse
, simplemente usebool
Como han señalado otras respuestas, si solo lo está usando como condición para un
if
owhile
, puede usarlo directamente sin envolver enbool()
fuente
bool
El valor es necesario cuando la declaración condicional contiene una operación aritmética booleana. por ejemplo: if (re.search ("a", "abc") & True):&
es una operación bit a bit .and
sería la operación booleana .(re.search("a","abc") and True)
bool
deja en claro al lector la intención del programador.Ignacio Vázquez-Abrams tiene razón. Pero para elaborar,
re.match()
devolveráNone
, que se evalúa comoFalse
, o un objeto de coincidencia, que siempre seráTrue
como dijo. Solo si desea información sobre las partes que coinciden con su expresión regular, debe verificar el contenido del objeto de coincidencia.fuente
Una forma de hacer esto es simplemente contrastar el valor de retorno. Porque lo está obteniendo
<_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.Produce
hi
como salida.fuente
None
es el valor predeterminado si no se devuelve nada explícitamente.Aquí está mi método:
fuente
match
asearch
, devolverá TruePuede usar
re.match()
ore.search()
. Python ofrece dos operaciones primitivas diferentes basadas en expresiones regulares:re.match()
busca una coincidencia solo al principio de la cadena, mientras quere.search()
busca una coincidencia en cualquier parte de la cadena (esto es lo que hace Perl por defecto). referir estofuente