正则匹配中文
背景:项目要做国际化需求,要有中英文切换功能,所以我需要找到代码中所有包含的中文。
原理:很简单,中文在unicode 和 utf-8里都有一定的编码范围,所以我们只需要找出编码最小和最大的中文即可。
幸运的是中文在unicode 和 utf-8里编码的顺序是相同的(注:gbk编码是以拼音顺序编码的,所以如果文件时gbk编码需要先对编码进行转换)。
最小编码:一(\u4e00)
最大编码:龥(\u9fa5)
命令:egrep -nR '[一-龥]+' * --color
附上python代码:
import re str=''' 汉字文字 1234567890 abcdefghijklmnopqrstuvwxyz -_+=!@#$%^&*()[]{};:"'<>,.?/|~ ` ''' ret1 = re.findall(u'[\u4e00-\u9fa5]+',str.decode('utf-8')) print ret1[0] ret2 = re.findall(r'[一-龥]+',str) print ret2[0]