html
おそらく WYSIWYG で発生した出力をクリーニングしています。正気を保つために削除したい空の書式設定タグがたくさんあります。
例えば
<em></em> Here's some text <strong> </strong> and here's more <em> <span></span></em>
Regular-Expressions.infoのおかげで、一度に 1 つのレイヤーをアンラップするための後方参照を備えたきちんとした正規表現があります。
# 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パーサーを指摘します。=)