正则表达式和中文
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