Aqui está o meu código:
import re
word="ABCD 12345"
match=re.search(r"\d*",word)
print(match.group())
Para este código, não estou obtendo saída (também não há erros).
Por favor, ajude. Qual é o problema aqui?
Responder1
O *
caractere especial significa "corresponderzero ou mais". Em outras palavras, \d*
é permitido ter uma correspondência de comprimento zero - e como é a única coisa em seu regex, toda a correspondência pode ter comprimento zero.
É verdade que *
é ganancioso e retornaria todos os dígitossena verdade, chegou à posição onde "12345" está presente - por exemplo, re.match(r"\d*", "12345")
teria retornado o número inteiro:
>>> re.pesquisa(r"\d*", "12345") <objeto re.Match; intervalo=(0, 5), correspondência='12345'>
Mas, no seu caso, ele não chega realmente a esse local na string; em vez disso, decide imediatamente que há uma correspondência na posição 0, comprimento 0. Observe o atributo 'span':
>>> re.search(r"\d*", "ABCD 12345") <objeto re.Match;intervalo=(0, 0), correspondência=''>
Você provavelmente deseja usar \d+
em seu lugar.