为什么下面这个匹配整数的正则表达式不按预期工作?
下面这段Python代码:
pattern = r'(0|1|2|3|4|5|6|7|8|9)+'
text = "Here are some numbers: 10, 201."
matches = re.findall(pattern, text)
print(matches)
输出结果是:
['0', '1']
为什么它没有打印出 ['10', '201'] 呢?
1 个回答
2
我来帮你拆解一下你的正则表达式,并详细解释一下。
r'(0|1|2|3|4|5|6|7|8|9)+'
这个表达式会匹配所有连续的数字字符串,但你的捕获组(也就是()
里面的内容)只包含一个数字,所以对于每个连续的数字字符串,只有最后一个数字会被捕获并保存下来。(在正则表达式中,匹配和捕获组是不同的,你的逻辑没有错,只是捕获组的设置不太对。)
如果你想在正则匹配中获取整个数字字符串,可以简单地使用这样的模式:
r'(\d+)'
这个模式会匹配任何数字。(它和使用[0-9]+
是一样的。)