Python正则表达式\ d *意外行为

时间:2018-01-17 04:13:16

标签: python regex python-3.x

我想使用Python 3.6.4正则表达式来匹配'something 123456'中的整个数字。 \d+正确匹配整数;但是,\d*与任何数字都不匹配,更不用说整数了。考虑到两个重复限定符的含义(0或更多实例为*,1或更多为+),这是出乎意料的。我确定已经在某处解释过了,但我找不到搜索的答案。有人可以解释或提供已经解释的帖子的链接吗?感谢。

2 个答案:

答案 0 :(得分:2)

*量词在零和无限次之间匹配。这意味着第11场比赛是123456来自字符串' 123456'其他十个你可以猜到的是其余的,因为它们包含你的搜索零次。

Regex matches Regex automata

您可以测试正则表达式here 您可以阅读更多here,但您已经知道需要了解的内容。

答案 1 :(得分:1)

对于那些不使用工具的人,re.search

*仅返回模式的第一个匹配项。问题中的示例有12个匹配,因为re.findall也返回0模式的实例。 您可以使用 re.findall("\d*", 'something 123456') # ['', '', '', '', '', '', '', '', '', '', '123456', '']

获取该模式的所有匹配项
{{1}}