2017-01-10 9 views
0

私はすべてのタグストリップ以下のようにコードを持っている:<br>タグを無視し、他のすべてのタグを削除する方法re.compile pythonのbr以外のすべてのタグを削除するには?

import re 

def cleanhtml(raw_html): 
    cleanr = re.compile('<.*?>') 
    cleantext = re.sub(cleanr, '', raw_html) 
    return cleantext 

payload = '<a href="asdasda.htm">I am inside</a><br/><p>Tagsssss</p>' 
print cleanhtml(payload) 

を?このコードは、すべての行を一緒に追加します。

+2

「<(?!br\b).*?>」 – revo

答えて

1

利用否定先読み:

<(?!br).*?> 

デモ:https://regex101.com/r/91s8rW/1

def cleanhtml(raw_html): 
    cleanr = re.compile(r'<(?!br).*?>') 
    cleantext = cleanr.sub('', raw_html) 
    return cleantext 

のためにあなたが正規表現次使用することができ、複数のbrのタグを検出し、1と交換してください:

re.sub(r'(<br>)+', r'\1', your_text) 

デモ:

In [7]: re.sub(r'(<br>)+', r'\1', 'foobar<br><br><br>barbaz') 
Out[7]: 'foobar<br>barbaz' 
+0

ありがとうございます。複数のbrタグを検出して1つのタグに置き換える方法はありますか? – ALH

+0

@ALH編集をチェックアウトしてください! – Kasramvd

+0

パーフェクト!どうもありがとうございました :) – ALH

関連する問題