正则表达式和中文

1

  博客插件需要实现一个功能,博文中出现的类似"@郭美美baby "的字符串用正则表达式找出来,并替换成链接和js、css相结合的丰富形态。如果只是数字下划线等英文字符组成的,就非常简单可写成:

  "/@\w+\s/"

  但中文字符的出现让这个表达式非常难搞。

2

  『.』可以匹配“除换行符/n之外的任意字符 ”,但这可能只适用于“单字节字符 ”,因为点号匹配的其实只是“除换行符/n之外的任意字节,php中『/w 』『/d 』『/s 也只能匹配ascii字符。因此,要匹配中文,需要另外的方法,unicode提供了一种方法,可以用\x{4e00}-\x{9fff} 表示汉字,关于unicode这一点,我搞明白了之后会再来补充。

3

  最终得到的正则表达式如下:

  "/@([\x{4e00}-\x{9fff}a-zA-Z0-9_])+\s/u"

4

  这篇文章我将会进行多次修改,以期对这个问题深入了解。以下知识将是下一个阶段的重点了解的:unicode,ascii等编码;gbk,utf-8,utf-16等编码方式。正则表达式的内在含义。 

资料列表:http://chinansu.blog.51cto.com/1504253/428947

http://blog.sjzm.org/archives/64

http://blog.csdn.net/cj205/article/details/6305902 

posted @ 2011-08-05 13:12  yanng  阅读(326)  评论(0编辑  收藏  举报