我有这个html标记:
x=""" <div>ad</div> \n\n <div> correct value </div> <div> wrong value </div> """
我想得到 corret value
所以我先搜索单词ad
,</div>
然后搜索任何事物,直到另一个事物,<div>
然后获取所有值,直到</div>
我使用以下代码:
re.findall(r'ad</div>.*<div>(.*)</div>',x,re.S)
我使用falg re.S,因为我也希望点与新行匹配。我不知道div之间有多少行。所以我用。*!
我认为findall应该返回correct value
,但是它会返回wrong value
。为什么 ?它搜索最后一个div而不是第一个?
因为你有贪婪
尝试偷懒:
re.findall(r'ad</div>.*?<div>(.*?)</div>',x,re.S)
在您的示例.*
中,实际上是将所有内容都匹配到最后,然后看到<div>
,然后您的正则表达式回溯并重新开始匹配,类似第二种情况,
演示在这里:
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句