Python中用正则表达式匹配中文

clydecheung 2007-04-04 03:36:08
我想在Python中用正则表达式匹配中文,用的是[\u4e00-\u9fa5]这段代码~~但是匹配结果有问题,这个表达式不仅能匹配中文,也能匹配英文字符~~
在别的语言中试验是好使的,但在Python中不好使~~不知道问什么~~是编码的问题么?
...全文
3734 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
iambic 2007-04-07
  • 打赏
  • 举报
回复
原来的字符串不是unicode。
N / A 2007-04-06
  • 打赏
  • 举报
回复
ur'[\u2e80-\uffff]'
clydecheung 2007-04-04
  • 打赏
  • 举报
回复
谢谢zarz,在上面的链接中找到个方法~~

//判断内容里有没有中文-GBK (PHP)
function check_is_chinese($s){
return preg_match('/[\x80-\xff]./', $s);
}

虽然不明所以,但是用上面的正则表达式的确好使~~
zarz 2007-04-04
  • 打赏
  • 举报
回复
编码问题比较复杂, 要考量数据源本身的编码格式, 不同的操作系统和设置导致的结构会有不同.

如果数据确定是gbk或gb2312的话, 你可以参考:
http://blog.csdn.net/heiyeshuwu/archive/2007/01/20/1488900.aspx
xyzxyz1111 2007-04-04
  • 打赏
  • 举报
回复
乔丹的gb2312 编码貌似是'\xc7\xc7\xb5\a4'
不在此范围之内
clydecheung 2007-04-04
  • 打赏
  • 举报
回复
很奇怪,汉字的Unicode编码不是从4e00到9fa5的么?
clydecheung 2007-04-04
  • 打赏
  • 举报
回复
# -*- coding: gb2312 -*-

import re

text = "Jordan (乔丹) Jordan (Jordan)"
p = re.compile(r"Jordan\s*\([^\)]*[\u4e00-\u9fa5][^\)]*\)", re.IGNORECASE)
iterator = p.finditer(text)
for match in iterator:
print match.group()

我想要的结果是"Jordan (乔丹)",但程序给出的结果是"Jordan (Jordan)"
yangxiao_jiang 2007-04-04
  • 打赏
  • 举报
回复
贴出代码看看

37,719

社区成员

发帖
与我相关
我的任务
社区描述
JavaScript,VBScript,AngleScript,ActionScript,Shell,Perl,Ruby,Lua,Tcl,Scala,MaxScript 等脚本语言交流。
社区管理员
  • 脚本语言(Perl/Python)社区
  • IT.BOB
加入社区
  • 近7日
  • 近30日
  • 至今

试试用AI创作助手写篇文章吧