2017-01-10 75 views
0

我有一個代碼,下面這條所有標籤:如何去除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) 

如何忽略<br>標籤,只是刪除所有其他標籤?此代碼將所有行附加在一起。

+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標籤和一個替換,您可以使用下面的正則表達式:

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標籤並將其替換爲一個? – ALH

+0

@ALH簽出編輯! – Kasramvd

+0

完美!非常感謝你 :) – ALH

相關問題