我正在清理一些html
可能源自所见即所得的输出。为了理智起见,我想摆脱一堆空的格式化标签。
例如
<em></em> Here's some text <strong> </strong> and here's more <em> <span></span></em>
多亏了Regular-Expressions.info,我有了一个带有反向引用的简洁正则表达式,可以一次打开一层
# Returns a string minus one level of empty formatting tags
def remove_empty_html_tags(input_string):
return re.sub(r'<(?P<tag>strong|span|em)\b[^>]*>(\s*)</(?P=tag)>', r'\1', input_string)
但是,我希望能够一次解开所有层<em> <span></span></em>
,并且可能有 5 层以上的嵌套空标签。
有没有办法将 backref a la (?:<?P<tagBackRef>strong|span|em)\b[^>]>(\s)*)+
(或其他东西)分组并稍后使用它(</(?P=tagBackRef>)+
来删除多个嵌套但匹配的空html
标签?
为后代:
这可能是一个XY 问题,其中我希望用于我想要的结果的工具不是其他人会选择的工具。亨利的回答回答了这个问题,但他和其他所有人都会将您指向一个 html 解析器而不是用于解析 html 的正则表达式。=)