非贪婪{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”】
这不就和你直接定下来数字还是有一定不同吗,可以理解成符合规则的最大长度就是贪婪,符合规则的最小长度匹配就是非贪婪的
212022-02-15 -
7七月
2018-11-05
{3} 和{3,6}肯定是不一样的,你不能拿特殊例子里结果的相同认为他们是一样啊。
012019-02-01
相似问题