zoukankan      html  css  js  c++  java
  • [转]Python正则表达式中匹配GBK/UTF8编码中文字符_绝冬之地_百度空间

    [转]Python正则表达式中匹配GBK/UTF-8编码中文字符_绝冬之地_百度空间

    [转]Python正则表达式中匹配GBK/UTF-8编码中文字符
    2009年10月14日 14:21

    Python的正则表达式匹配和源代码编码相同的中文字符

    如果源代码为GBK,则对于UTF-8编码中文字符无法匹配

    如果源代码为UTF-8,则对于GBK编码中文字符无法匹配

    所以此时如果需要匹配和源代码编码不同中文字符,只有采用\x12\x34的HEX编码方式进行匹配

    下边是使用encode库将GBK和UTF-8编码汉字转换为\x12\x34的HEX编码的方法,并进行正则表达式匹配

    请将源文件保存为UTF-8格式

    # -*- coding:UTF-8 -*-

    ################################代码如下################################

    import re

    def UTF2Hex(s):

        temp = s.encode("UTF-8").encode("hex")

        line = ""

        for i in range(0,len(temp)-1,2):

            line += "\\x" + temp[i] + temp[i+1]

        return line



    def GBK2Hex(s):

        temp = s.encode("GBK").encode("hex")

        line = ""

        for i in range(0,len(temp)-1,2):

            line += "\\x" + temp[i] + temp[i+1]

        return line



    print UTF2Hex(u"转载请注明文章来源")

    print GBK2Hex(u"转载请注明文章来源")



    #这样就可以使用HEX编码后的进行正则匹配了,将源文件保存为UTF-8格式

    #会发现编码不同正则表达式会匹配不同的结果

    s = "转载请注明文章来源 匹配文档 end"

    t_utf = re.match("\xe8\xbd\xac\xe8\xbd\xbd\xe8\xaf\xb7\xe6\xb3\xa8\xe6\x98\x8e\xe6\x96\x87\xe7\xab\xa0\xe6\x9d\xa5\xe6\xba\x90(.*?)end",s)

    print t_utf and t_utf.group(1) or "未能查找到指定字符"

    t_gbk = re.match("\xd7\xaa\xd4\xd8\xc7\xeb\xd7\xa2\xc3\xf7\xce\xc4\xd5\xc2\xc0\xb4\xd4\xb4(.*?)end",s)

    print t_gbk and t_gbk.group(1) or "未能查找到指定字符"

    #直接匹配汉字字符,等同UTF-8编码,因为文件保存为UTF-8格式

    t = re.match("转载请注明文章来源(.*?)end",s)

    print t and t.group(1) or "未能查找到指定字符"

    ################################代码结束################################
  • 相关阅读:
    angular 写 文字省略显示指令
    REACT 学习之一:普通表单过滤
    怎么能够做到实时的邮件监听-- 求指点
    C++实现Behavioral
    private virtual in c++
    接口污染
    C++ 虚函数&纯虚函数&抽象类&接口&虚基类(转)
    c++ override 关键字
    virtual function c++
    删完垃圾代码2
  • 原文地址:https://www.cnblogs.com/lexus/p/2391666.html
Copyright © 2011-2022 走看看