Вот мой код:
import re
word="ABCD 12345"
match=re.search(r"\d*",word)
print(match.group())
Для этого кода я не получаю никакого вывода (и никаких ошибок).
Помогите, пожалуйста. В чем тут проблема?
решение1
Специальный *
символ означает «соответствиеноль или больше". Другими словами, \d*
допускается совпадение нулевой длины, а поскольку это единственное, что есть в вашем регулярном выражении, то и все совпадение допускается иметь нулевую длину.
Это правда, что *
это жадный метод, и он вернет все цифры.еслион фактически дошел до позиции, где присутствует «12345» — например, re.match(r"\d*", "12345")
вернул бы целое число:
>>> re.search(r"\d*", "12345") <re.Match object; span=(0, 5), match='12345'>
Но в вашем случае он на самом деле не добирается до этого места в строке, вместо этого он сразу решает, что есть совпадение в позиции 0, длиной 0. Обратите внимание на атрибут 'span':
>>> re.search(r"\d*", "ABCD 12345") <re.Сопоставить объект;диапазон=(0, 0), совпадение=''>
Вероятно, вы захотите использовать \d+
вместо этого .