mjc*_*mjc 3 html python regex tags
如果我有一个包含这个的字符串:
<p><span class=love><p>miracle</p>...</span></p><br>love</br>
Run Code Online (Sandbox Code Playgroud)
我想删除字符串:
<span class=love><p>miracle</p>...</span>
Run Code Online (Sandbox Code Playgroud)
也许还有其他一些HTML标签.同时,将保留其他标签及其中的内容.
结果应该是这样的:
<p></p><br>love</br>
Run Code Online (Sandbox Code Playgroud)
我想知道如何使用正则表达式模式?我试过的:
r=re.compile(r'<span class=love>.*?(?=</span>)')
r.sub('',s)
Run Code Online (Sandbox Code Playgroud)
但它会离开
</span>
Run Code Online (Sandbox Code Playgroud)
你能帮助我这次使用re模块吗?接下来我将学习html解析器
首先要做的事情是:不要使用正则表达式解析HTML
话虽这么说,如果该span标签中没有额外的span标签,那么你可以这样做:
text = re.sub('<span class=love>.*?</span>', '', text)
Run Code Online (Sandbox Code Playgroud)
旁注:段落标签不应该在span标签内(仅包括措辞内容).
你尝试过的表达<span class=love>.*?(?=</span>)方式已经非常好了.问题在于前瞻(?=</span>)永远不会与它未来的前景相匹配.因此表达式将在结束span标记之前立即停止.你现在可以在最后手动添加一个结束范围,即<span class=love>.*?(?=</span>)</span>,但这不是必需的:这.*?是一个非贪婪的表达式.它将尝试尽可能少地匹配.因此,在.*?</span>该.*?会只匹配,直到收盘跨度找到一处立即停止.