【发布时间】:2013-07-03 13:17:51
【问题描述】:
如果我有一个包含这个的字符串:
<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>
我想知道如何使用正则表达式模式来做到这一点? 我尝试过的:
r=re.compile(r'<span class=love>.*?(?=</span>)')
r.sub('',s)
但它会离开
</span>
这次你能帮我使用re模块吗?接下来我将学习html解析器
【问题讨论】:
-
and maybe some other HTML tags..- 如果你要删除很多不同的东西,你应该考虑解析 HTML 而不是使用正则表达式。 -
在正则表达式中无法做到这一点...使用 html 解析器
-
@Anirudh - 不正确,正如 poke 的回答所证明的那样,正则表达式可以选择两个字符串以及介于两者之间的任何内容
-
@Anirudh 完全错误,正如 Chris Stratton 强调的那样。人们对“正则表达式无法解析 HTML 文档”的教义断言如此着迷,以至于他们一看到 HTML 文本上的一些正则表达式就会写任何东西。
-
@ChrisStratton 1>如果有嵌套的跨度标签,答案中的正则表达式将不起作用..2>很多时候跨度标签没有结束标签,因此破坏了代码..有n 没有其他情况会导致该正则表达式失败..如果您愿意,我可以列出 10 个其他正则表达式会中断的情况