为什么我的正则表达式代码没有返回任何结果?

为什么我的正则表达式代码没有返回任何结果?

这是我的代码:

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+

相关内容