Python 使用正则 清除字符串中除了 <sub>...</sub> 和 <sup>...</sup> 以外的所有 html 标签
指定标签内无其它标签
import re
def sub_replace(match_obj):
# print(type(match_obj), match_obj)
tag = match_obj.group()
if 'sub>' in tag or 'sup>' in tag:
return tag
text = "<a>测试</a><sub>--sub标签内容--</sub><div>测试</div><sup>--sup标签内容--</sup><div>测试测</div>"
# re.sub 可传入 一个可调用对象
regex = re.compile(r'(<?[^>]+>)')
result = regex.sub(sub_replace, text)
print(result) # <sub>--sub标签内容--</sub><sup>--sup标签内容--</sup>
指定标签内有其它标签
import re
text = '<a>1111111</a><sub>--sub标签内容--<div>aaaa</div></sub><img>2222222</img><sup>--sup标签内容--<div>aaaa</div></sup>'
result = re.sub(r'<(?!sup|sub)([^>]+)>.*?</\1>', '', text)
print(result) # <sub>--sub标签内容--</sub><sup>--sup标签内容--</sup>