如何从字符串中删除 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>
元素的开始和结束标记匹配,没有其他以一个.
我有一个字符串'<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>
元素的开始和结束标记匹配,没有其他以一个.