2017-01-10 2 views
0

Ich habe einen Code, wie, unter dem alle Tags Streifen:Wie entfernen Sie alle Tags außer br in re.compile Python?

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) 

Wie <br> Tags ignorieren und alle anderen Tags nur entfernen? Dieser Code hängt alle Zeilen zusammen.

+2

Von '<(?!br\b).*?>' – revo

Antwort

1

Verwenden Sie eine negative Vorschau:

<(?!br).*?> 

Demo: https://regex101.com/r/91s8rW/1

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

Für mehrere br-Tags erkennen und ersetzen mit einem können Sie folgende regex verwenden:

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

Demo:

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

Vielen Dank. Gibt es eine Möglichkeit, mehrere br-Tags zu erkennen und durch eins zu ersetzen? – ALH

+0

@ALH Checkout bearbeiten! – Kasramvd

+0

Perfekt! Vielen Dank :) – ALH

Verwandte Themen