匹配中文的正则表达式
June 2nd, 2008
Categories: 教程
以前在编写linux下的scim郑码码表时,就跟正则式的中文匹配问题打过交道。当时总结了这样一条经验,utf8编码格式下,中文正则式应该这样书写:
1 | [\x80-\xff]{3} |
当然,这与语言无关。在perl与python中,都是一样的。
现在,这条正则式又派上用场了。正在编写的一个小程序MiniBlogs Updater中,需要计算用户所输入的文字字数。因为中英文字符编码长度不一,如果直接使用python中的len()函数,它计算的是该字串的实际长度,一个中文字并非等同于一个英文字母的。因此,需要把中文字当成英文字母来处理。
我写了这样一条语句来处理:
1 | length=len(re.sub('[\x80-\xff]{3}','a',msg)) |
它的意思是,把所有的中文都替换成英文字母a,然后再统计字数。(只是统计而已,不修改源字串。)这条语句在windows下utf8文件中能够正常工作。
再分享两则与匹配中文的正则表达式有用的链接:
正则真烦人
[Reply]