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

[转]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 "未能查找到指定字符"

################################代码结束################################
posted on 2012-03-12 13:45  lexus 阅读( ...) 评论( ...) 编辑 收藏

转载于:https://www.cnblogs.com/lexus/archive/2012/03/12/2391666.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值