采纳答案成功!
向帮助你的同学说点啥吧!感谢那些助人为乐的人
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)不就好了吗?
我是这么理解的哈,比如有个字符串“abcdefghiqqqqi”
正则表达式写“【a-z】{1-13}i”,这时候是贪婪的,他会一直匹配到最后一个q和后面的i,得到的列表只有一个元素就是这个字符串
但是如果写“【a-z】{1-10}?i”,这时候就是非贪婪的,他会在匹配到第一个abcdefghi后再匹配第二个qqqqi,这时候得到的列表有两个元素,就是【“abcdefghi”,“qqqqi”】
这不就和你直接定下来数字还是有一定不同吗,可以理解成符合规则的最大长度就是贪婪,符合规则的最小长度匹配就是非贪婪的
但是如果写“【a-z】{1-10}?i”,这时候就是非贪婪的,他会在匹配到第一个abcdefghi后再匹配第二个qqqqi,这时候得到的列表有两个元素,就是【“abcdefghi”,“qqqqi”】------按你后面说的,非贪婪是匹配最小的长度,不应该是['hi','qi']嘛??
{3} 和{3,6}肯定是不一样的,你不能拿特殊例子里结果的相同认为他们是一样啊。
请问有什么不一样呢?不都是匹配了3位吗?难道说对于数量词{3,6},Python有可能取4和5?可以举一个反例吗?谢谢。
登录后可查看更多问答,登录/注册
语法精讲/配套练习+思考题/原生爬虫实战
5.6k 7
2.5k 3
2.2k 4
4.2k 22
2.3k 19