非贪婪匹配问题
来源:10-6 贪婪与非贪婪
小鲁锅的进阶之路
2017-12-16
代码如下:
s = 'pythhonn123python1234pythho'
r = re.findall('pyth{1,2}?on', s)
print(r)
d = re.findall('pyth{1,2}on', s)
print(d)
输入如下:
['pythhon', 'python']
['pythhon', 'python']
为什么会一致呢?
h{1,2}?不是应该尽可能少的匹配h吗
写回答
2回答
-
坨坨儿
2018-01-01
因为贪婪不是首先考虑的,首先考虑的是匹配出的所有结果,然后在结果中选出贪婪或非贪婪。
以你的题目为例:
若不去掉ON,则前面的第1个匹配是唯一的pythhon,那么就没有贪婪性可言
若去掉ON,前面第1个匹配有两种pyth和pythh,然后就可以依据是否贪婪进行选择想要的结果
30 -
有你的世界
2017-12-17
把on去掉可以得到你想的结果
012017-12-23
相似问题