zoukankan      html  css  js  c++  java
  • 2016/12/15学习笔记正则表达式

    re.compile(r"[w'-]+")

    w表示匹配包括下划线的任何单词字符。等价于[A-Za-z0-9]

    +表示匹配1或多个正好在它之前的那个字符;

    匹配已

     re_cdata=re.compile('//<![CDATA[[^>]*//]]>',re.I) #匹配CDATA
        re_script=re.compile('<s*script[^>]*>[^<]*<s*/s*scripts*>',re.I)#Script
        re_style=re.compile('<s*style[^>]*>[^<]*<s*/s*styles*>',re.I)#style
        re_br=re.compile('<brs*?/?>')#处理换行
        re_h=re.compile('</?w+[^>]*>')#HTML标签
        re_comment=re.compile('<!--[^>]*-->')#HTML注释
        s=re_cdata.sub('',htmlstr)#去掉CDATA
        s=re_script.sub('',s) #去掉SCRIPT
        s=re_style.sub('',s)#去掉style
        s=re_br.sub(' ',s)#将br转换为换行
        s=re_h.sub('',s) #去掉HTML 标签
        s=re_comment.sub('',s)#去掉HTML注释
        #去掉多余的空行
        blank_line=re.compile(' +')
        s=blank_line.sub(' ',s)
        s=replaceCharEntity(s)#替换实体
        return s

    ##替换常用HTML字符实体.
    #使用正常的字符替换HTML中特殊的字符实体.
    #你可以添加新的实体字符到CHAR_ENTITIES中,处理更多HTML字符实体.
    #@param htmlstr HTML字符串.
    def replaceCharEntity(htmlstr):
        CHAR_ENTITIES={'nbsp':' ','160':' ',
                    'lt':'<','60':'<',
                    'gt':'>','62':'>',
                    'amp':'&','38':'&',
                    'quot':'"','34':'"',}
       
        re_charEntity=re.compile(r'&#?(?P<name>w+);')
        sz=re_charEntity.search(htmlstr)
        while sz:
            entity=sz.group()#entity全称,如&gt;
            key=sz.group('name')#去除&;后entity,如&gt;为gt
            try:
                htmlstr=re_charEntity.sub(CHAR_ENTITIES[key],htmlstr,1)
                sz=re_charEntity.search(htmlstr)
            except KeyError:
                #以空串代替
                htmlstr=re_charEntity.sub('',htmlstr,1)
                sz=re_charEntity.search(htmlstr)
        return htmlstr

    def repalce(s,re_exp,repl_string):
        return re_exp.sub(repl_string,s)

    if __name__=='__main__':
        s=file('Google.htm').read()
        news=filter_tags(s)
        print news

    ——————————————————华丽的分割线——————————————————————————

    import urllib2,re
    x=urllib2.urlopen('http://www.csdn.net').read()
    re_h=re.compile('</?w+[^>]*>')
    s=re_h.sub('',x) 
    print s

  • 相关阅读:
    在不同的浏览器下FORM及它的小伙伴们默认样式的CSS属性值是不全然一致
    思考博客园的机器人攻击,想到我们可能也需要开启iptables
    大数据量的Mysql数据库备份策略
    win7或win2008系统中,出现【已停止工作,联机检查解决方案并关闭该程序,关闭程序】解决方法!
    Mysql的碎片查看与处理
    "个性化空间"性能优化方案设计初步
    假期结束后的工作安排
    GZIP压缩占用CPU大吗?
    媒体云平台
    关于二级缓存的设计思路
  • 原文地址:https://www.cnblogs.com/cpetcoandy/p/6182463.html
Copyright © 2011-2022 走看看