请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

非贪婪匹配问题

代码如下:

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吗

正在回答 回答被采纳积分+3

2回答

坨坨儿 2018-01-01 17:06:16

因为贪婪不是首先考虑的,首先考虑的是匹配出的所有结果,然后在结果中选出贪婪或非贪婪。

以你的题目为例:

若不去掉ON,则前面的第1个匹配是唯一的pythhon,那么就没有贪婪性可言

若去掉ON,前面第1个匹配有两种pyth和pythh,然后就可以依据是否贪婪进行选择想要的结果

3 回复 有任何疑惑可以回复我~
有你的世界 2017-12-17 13:13:31

把on去掉可以得到你想的结果

0 回复 有任何疑惑可以回复我~
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信