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.