非贪婪{3,6}?加个问号?与{3}有什么区别?输出结果不是一样吗?为什么要输多几个字符?

来源:10-6 贪婪与非贪婪

慕粉2019071526

2018-11-04

s = ‘python 12334java|php’
r = re.findall(’[a-z]{3}’, s)与r = re.findall(’[a-z]{3,6}?’, s)输出结果不是一样吗?为什么那么麻烦直接用r = re.findall(’[a-z]{3}’, s)不就好了吗?

写回答

2回答

小黄鸭777

2019-04-16

我是这么理解的哈,比如有个字符串“abcdefghiqqqqi”

正则表达式写“【a-z】{1-13}i”,这时候是贪婪的,他会一直匹配到最后一个q和后面的i,得到的列表只有一个元素就是这个字符串

但是如果写“【a-z】{1-10}?i”,这时候就是非贪婪的,他会在匹配到第一个abcdefghi后再匹配第二个qqqqi,这时候得到的列表有两个元素,就是【“abcdefghi”,“qqqqi”】

这不就和你直接定下来数字还是有一定不同吗,可以理解成符合规则的最大长度就是贪婪,符合规则的最小长度匹配就是非贪婪的

2
1
慕工程8176647
但是如果写“【a-z】{1-10}?i”,这时候就是非贪婪的,他会在匹配到第一个abcdefghi后再匹配第二个qqqqi,这时候得到的列表有两个元素,就是【“abcdefghi”,“qqqqi”】------按你后面说的,非贪婪是匹配最小的长度,不应该是['hi','qi']嘛??
2022-02-15
共1条回复

7七月

2018-11-05

{3} 和{3,6}肯定是不一样的,你不能拿特殊例子里结果的相同认为他们是一样啊。

0
1
蒋一筒
请问有什么不一样呢?不都是匹配了3位吗?难道说对于数量词{3,6},Python有可能取4和5?可以举一个反例吗?谢谢。
2019-02-01
共1条回复

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

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

14446 学习 · 4438 问题

查看课程