在采集的过程中,需要去除掉被采集内容的多余HTML标签,通过搜索,找到这么一段代码(自己修改了一下):
html = '<p>你好</p><br/><font a= img= >哈哈</font><b>大家好</b>呵呵'
pattern = r'<[^>]+>'
result = re.sub(pattern,'', html)
print(result)
这个代码中正则表达式就是:
pattern = r'<[^>]+>'
这个代表什么呢?
”^”这个字符是在中括号”[]”中被使用的话就是表示字符类的否定,如:
[^a]表示“匹配除了a的任意字符”。
[^a-zA-Z0-9]表示“找到一个非字母也非数字的字符”。
[\^abc]表示“找到一个插入符或者a或者b或者c”。
例如正则表达式[^269A-Z],将匹配除了2、6、9和所有大写字母之外的任何字符。那么:
pattern = r'<[^>]+>'
就是匹配除了>之外的任何字符。而任何的HTML标签就是类似于:<>这样的,所以可以匹配掉所有的HTML代码。
如果我要保留段落标签(<p></p>)怎么办呢?
通过测试,可以这么写:
html = '<p>你好</p><br/><font a= img= >哈哈</font><b>大家好</b>呵呵'
pattern = r'<[^p?]+>'
result = re.sub(pattern,'', html)
print(result)
新的问题是:如果要去掉HTML标签,但是却保留段落P标签,换行标签b(当然也可能是strong加强标签等)应该怎么写?
标签: 正则表达式