如果我有一个包含以下内容的字符串:
<p><span class=love><p>miracle</p>...</span></p><br>love</br>
我想删除字符串:
<span class=love><p>miracle</p>...</span>
或许还有其他一些HTML标签。同时,保留其他标签及其内容。
结果应该是这样的:
<p></p><br>love</br>
我想知道如何使用regex模式? 我试过的:
r=re.compile(r'<span class=love>.*?(?=</span>)')
r.sub('',s)
但它会离开
</span>
这次你能帮我用重新模块吗?接下来我将学习html解析器
先做第一件事:Don’t parse HTML using regular expressions
也就是说,如果该范围标记中没有其他范围标记,则可以这样做:
另一方面:段落标记不应该在span标记内(只有phrasing content是)。
您尝试过的表达式
<span class=love>.*?(?=</span>)
已经非常好了。问题是,展望(?=</span>)
永远不会与它的展望相匹配。因此表达式将在关闭span标记之前立即停止。现在,您可以在末尾手动添加一个结束跨度,即<span class=love>.*?(?=</span>)</span>
,但这并不是真正必要的:.*?
是一个非贪婪的表达式。它将尽可能少地匹配。因此在.*?</span>
中,.*?
将只匹配,直到找到一个闭合跨度,它立即停止。相关问题 更多 >
编程相关推荐