请稍等 ...
×

采纳答案成功!

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

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

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)不就好了吗?

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

2回答

小黄鸭777 2019-04-16 22:44:46

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

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

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

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

2 回复 有任何疑惑可以回复我~
  • 但是如果写“【a-z】{1-10}?i”,这时候就是非贪婪的,他会在匹配到第一个abcdefghi后再匹配第二个qqqqi,这时候得到的列表有两个元素,就是【“abcdefghi”,“qqqqi”】------按你后面说的,非贪婪是匹配最小的长度,不应该是['hi','qi']嘛??
    回复 有任何疑惑可以回复我~ 2022-02-15 16:01:09
7七月 2018-11-05 02:47:12

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

0 回复 有任何疑惑可以回复我~
  • 请问有什么不一样呢?不都是匹配了3位吗?难道说对于数量词{3,6},Python有可能取4和5?可以举一个反例吗?谢谢。
    回复 有任何疑惑可以回复我~ 2019-02-01 11:03:57
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信