我有一个代码如下:剥离所有标签:
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>
代码并删除所有其他代码?此代码将所有行附加在一起。
答案 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'