非贪婪匹配问题

来源: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,然后就可以依据是否贪婪进行选择想要的结果

3
0

有你的世界

2017-12-17

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

0
1
小鲁锅的进阶之路
确实,能解释一下这是为何吗
2017-12-23
共1条回复

Python3.8系统入门+进阶 (程序员必备第二语言)

语法精讲/配套练习+思考题/原生爬虫实战

14447 学习 · 4438 问题

查看课程