这是我的代码:
import re
word="ABCD 12345"
match=re.search(r"\d*",word)
print(match.group())
对于此代码,我没有得到任何输出(也没有错误)。
请帮忙。这里的问题是什么?
答案1
特殊*
字符表示“匹配零个或多个“。换句话说,\d*
允许零长度匹配 - 并且因为它是正则表达式中唯一的东西,所以整个匹配允许为零长度。
这是*
贪婪的,并且会返回所有数字如果它实际上到达了“12345”存在的位置 - 例如re.match(r"\d*", "12345")
将返回整数:
>>> 重新搜索(r“\d*”,“12345”) <re.Match 对象;跨度=(0,5),匹配='12345'>
但在您的情况下,它实际上并没有到达字符串中的那个位置,而是立即确定位置 0、长度 0 处存在匹配。请注意“span”属性:
>>> re.search(r"\d*", "ABCD 12345") <re.Match 对象;跨度=(0,0), 匹配=''>
您可能想改用\d+
。