我有一个类似html的字符串,我想从中提取数据。在
s="<ul><li>this is a bullet lev 1 </li><li><ul><li><strong> this</strong> is a bullet lev </li></ul></li><li> <ul><li><ul><li>this is a bullet lev 3</li></ul></li></ul></li></ul></ul><strong></li>
““
我想提取包含<;li>;元素的所有数据的内容,这些元素之间包含类似“this is a bullet lev 1”的元素,而不是包含其他元素的元素,如
^{pr2}$我为此写了一个正则表达式
<li>([\w &;/<>]*?)</li>
然而,这最终也会带来不需要的数据
<li>this is a bullet lev 1 </li>
<li><ul><li><strong> this</strong> is a bullet lev </li>
<li> <ul><li><ul><li>this is a bullet lev 3</li>
当我想要它拉的时候
<li>this is a bullet lev 1 </li>
<li><strong> this</strong> is a bullet lev </li>
<li> <ul><li><ul><li>this is a bullet lev 3</li>
我的想法是,我希望排除提取数据中已经包含的任何结果,然后继续前进。在
根据我的研究,我知道我可能要用“向前看”或“向后看”,我试了几次,但都没用。在
有什么线索吗?我正在使用python和它内置的re模块。在
我想这也许能解决问题。在
应该匹配任何
<li>
后跟</li>
以及两者之间的任何内容,只要它们不包含<li>
(使用lookahead)这假设您实际上并不想要
<li> <ul><li><ul><li>this is a bullet lev 3</li>
,而是希望在您的示例中使用<li>this is a bullet lev 3</li>
,这似乎更符合您的描述。在也就是说,一般来说,对于这类事情,解析器确实是一个更好的主意。在
我以前从未使用过BeautifulSoup,但我在15分钟内安装了它,而且没有阅读任何文档:
希望这能帮助。。。在
相关问题 更多 >
编程相关推荐