python语言下的正则表达式运行有误

我需要一句正则表达式从html页面中提取出可以用的信息,分别是<h1> <h2> <h3> 和 <div class="para"> 的标签,考虑到<div>标签有嵌套的<div>标签,我用的如下表达式:

<h[1-3].*?</h[1-3]>|<div class="para"[^>]*>(<div[^>]*>.*?</div>|.)*?</div>

这个表达式在在线测试网站上可以正确提取出我想要的结果

clipboard.png

但是它在python下运行只可以提取出正确的条数,而取不出我想要的内容:

clipboard.png

请问是我的表达式是需要转义?还是说python下的正则和普通的正则不太一样?我觉得条数既然能够提取出来,应该是我忽略了某个细节,希望有经验的大神能指点一下,谢谢!

阅读 2.6k
2 个回答

从html/xml标记类型文档用正则提取是一种非常糟糕的实践,强烈不推荐这种方式提取,非常容易出错,并且极难维护。

这种标记类型文档强推xpath语法提取,专门提取html/xml这种标记类型文档,比正则方便多了。

看到你这正则头都大了,懒的细读你的匹配规则了,建议改用xpath重写吧

xpath 或者 beautifulsoup

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题