Por que meu código regex não retorna nenhum resultado?

Por que meu código regex não retorna nenhum resultado?

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.

informação relacionada