采纳答案成功!
向帮助你的同学说点啥吧!感谢那些助人为乐的人
import re
a = 'adsfasdPythonPythonPythonPythonPythonsdfsdfa'
r = re.findall('(Python){1,}',a)
w = re.findall('Python{1,}?',a)
print(r)
print(w)
#对于打印出的结果不是很懂
r 是重复(Python)且贪婪模式,所以 匹配'PythonPythonPythonPythonPython'了这个,返回的分组为()里的python,所以结果是[' python']
w 只是'n'字符重复1次以上且非贪婪,所以匹配了5个'Python',结果为['Python','Python','Python','Python','Python']
如果 r = re.findall('(Python){1}',a) 打印出的结果是 PythonPythonPythonPythonPython 为什么不是一个Python 呢?
{1}和{1,}的区别就在于{1}只匹配一次,{1,}会匹配尽量多次啊,所以{1}匹配到的是5个Python,{1,}匹配到的是 1个PythonPythonPythonPythonPython,而当findall里面有()分组的时候,只会返回分组匹配的数据,所以{1}返回了5个“Python”,{1,}返回了1个“Python”,懂了么
这就是贪婪模式的体现,顾名思义,贪婪就是尽可能多的匹配符合要求的字符串。 而贪婪模式是系统默认的。
登录后可查看更多问答,登录/注册
语法精讲/配套练习+思考题/原生爬虫实战
5.5k 7
2.5k 3
2.1k 4
4.1k 22
2.3k 19