您的位置:首页 > 编程语言 > Python开发

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

2012-03-12 13:45 1206 查看
[转]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 "未能查找到指定字符"

################################代码结束################################
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: