¿Por qué mi código regex no arroja ningún resultado?

¿Por qué mi código regex no arroja ningún resultado?

Aquí está mi código:

import re
word="ABCD 12345"
match=re.search(r"\d*",word)
print(match.group())

Para este código, no obtengo ningún resultado (tampoco errores).

Por favor ayuda. Cuál es el problema aquí?

Respuesta1

El *carácter especial significa "coincidenciacero o más". En otras palabras, \d*se permite que sea una coincidencia de longitud cero y, como es lo único en su expresión regular, se permite que toda la coincidencia sea de longitud cero.

Es cierto que *es codicioso y devolvería todos los dígitos.sien realidad llegó a la posición donde está presente "12345"; por ejemplo, re.match(r"\d*", "12345")habría devuelto el número entero:

>>> re.búsqueda(r"\d*", "12345")
<re.Coincidir objeto; intervalo = (0, 5), coincidencia = '12345'>

Pero en su caso, en realidad no llega a esa ubicación en la cadena, sino que decide inmediatamente que hay una coincidencia en la posición 0, longitud 0. Tenga en cuenta el atributo 'span':

>>> re.búsqueda(r"\d*", "ABCD 12345")
<re.Coincidir objeto;intervalo = (0, 0), coincidencia =''>

Probablemente quieras usar \d+en su lugar.

información relacionada