怎样用正则表达式过滤掉页面中除了<p></p>和<img>以外所有的标签

像这样可以保留p标签:str.replaceAll("(<(\\/?[^Pp].*?)>)","").replaceAll("[\\s*]+","").replaceAl... 像这样可以保留p标签:
str.replaceAll("(<(\\/?[^Pp].*?)>)", "").replaceAll("[\\s*]+"," ").replaceAll(" ", "");我现在想保留p和img标签
展开
 我来答
beowulf001
2016-07-19 · TA获得超过296个赞
知道小有建树答主
回答量:134
采纳率:0%
帮助的人:108万
展开全部

这个还真不容易实现,单独保留p或者img都可以,但是两个条件放一起就不行了。于是我换了一种思路,用了个函数实现了,你看下,代码是python下的:

import re

t = '<html>asdfasdf<head>1111111111<body><p>asdfasdfasdf</p> <img herf="fff">'
def replace_two(m):
    """
    #过滤掉页面中除了<p></p>和<img>以外所有的标签
    """
    all = re.findall(r'</?.*?>',m)
    save = re.findall(r'</?(?:img).*?>|</?[pP]*?>',m)

    for e in all:
        if e not in save:
            m1 = m.replace(e, '')
            m = m1
    return m

print replace_two(t)
追答
[]的用法是匹配[]中的任意一个字符,加^是不匹配的意思,你这样写会把以i、m和g开头标签都会过滤掉的
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式