关于正则表达式中的?非贪婪匹配
str = '<li>推荐</a></li><li ><a href="/nav/watchers">动态</a></li>'
result = re.findall('<li>.*</li>',str)
这里的result将会从 < li > 开头匹配到最远的 < /li >,不加?的时候是贪婪匹配,此时< li > 至 < /li >中的内容尽可能地多,将从< li > 开头的匹配至最后的 < /li >
result = re.findall('<li>.*?</li>',str)
这里的正则表达式中的?表示这个式子是非贪婪匹配,将从< li > 开头的匹配至最近的 < /li >,使 < li > 至 < /li >中的内容尽可能地少
总结:加?的时候从开头的< li > 匹配遇到的第一个 < /li > ,两者之间的内容尽可能地少,没有?将会匹配到最后一个 < /li >,里面的内容尽可能地多