如何从字符串中删除 html 元素但使用正则表达式排除特定元素

How to remove html elements from a string but exclude a specific element with regex

我有一个字符串'<span>TEST1</span> <span>TEST2</span> <a href="#">TEST3</a>'

我需要删除 html 标签并保留文本

import re
p = re.compile( '\s*<[^>]+>\s*')
test = p.sub('', '<span>TEST1</span> <span>TEST2</span> <a href="#">TEST3</a>')
print(test)

输出:TEST1TEST2TEST3

但这会删除每个 html 元素,我应该如何更改正则表达式以便输出如下所示:

OUTPUT: TEST1 TEST2 <a href="#">TEST3</a>

您可以使用 so-called“Negative Lookaheads”。

在你的情况下,你可以省略 <a </a>:

(?!<a )(?!<\/a>)<[^>]+>

注意 <a 中的 space 和 </a> 中的右括号,这样只有 <a> 元素的开始和结束标记匹配,没有其他以一个.