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

2024-04-20 07:13:23 发布

您现在位置:Python中文网/ 问答频道 /正文

我想使用python3.6.4正则表达式来匹配'something 123456'中的整数。\d+正确匹配整数;但是\d*不匹配任何数字,更不用说匹配整数了。考虑到两个重复限定符的含义(0个或多个实例表示*,1个或多个实例表示+),这是出乎意料的。我确信这已经在某个地方解释过了,但我无法通过搜索找到答案。有人能解释一下或者提供一个链接到已经解释过的帖子吗?谢谢。你知道吗


Tags: 实例答案链接地方数字整数something帖子
2条回答

对于那些不使用工具而是使用re.search的人来说。你知道吗

re.search只返回模式的第一个匹配项。问题中的示例有12个匹配项,因为*还返回0个模式实例。 您可以使用re.findall获得模式的所有匹配项:

 re.findall("\d*", 'something 123456')
 # ['', '', '', '', '', '', '', '', '', '', '123456', '']

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

Regex matchesRegex automata

你可以测试你的正则表达式here
你可以读更多的here,但你已经知道你需要知道什么了。你知道吗

相关问题 更多 >