如何在re.compile python中删除除br之外的所有标记?

时间:2017-01-10 12:55:55

标签: python regex

我有一个代码如下:剥离所有标签:

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>代码并删除所有其他代码?此代码将所有行附加在一起。

1 个答案:

答案 0 :(得分:2)

使用否定前瞻:

<(?!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'