[转]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 "未能查找到指定字符" ################################代码结束################################ |
相关文章推荐
- PHP匹配UTF-8中文字符的正则表达式
- PHP正则表达式 中文匹配 UTF-8编码下的的注意事项
- Python从文件中读取字符串,用正则表达式匹配中文字符的问题
- php将中文转换成相应匹配的正则表达式(要求原文本为utf-8编码)
- 正则匹配时遇到的编码问题(unicode,gbk,utf-8,中文)
- python利用utf-8编码判断中文英文字符
- 【正则表达式】匹配中文字符 整理
- Python用正则表达式判断中文字符
- php中utf-8编码下用正则表达式如何匹配汉字
- 正则表达式,匹配中文字符、手机号、Email地址、网址URL、HTML标记、国内电...
- 正确的PHP匹配UTF-8中文的正则表达式
- Python中的正则表达式匹配中文问题
- UTF-8编码时,PHP如何正则匹配中文汉字?亲测可用
- python正则表达式匹配[]中间为任意字符
- python替换UTF-8编码文本中任意特殊字符,包括中文符号
- Python中正则表达式对中文的匹配问题
- 匹配中文字符的正则表达式
- php中utf-8编码下用正则表达式如何匹配汉字
- python(40):利用utf-8编码判断中文英文字符
- 【正则表达式】匹配中文字符 整理