日期:2014-05-20  浏览次数:21172 次

正则表达式分割中文
我想使用正则表达式中的Regex类中的Split方法来分割一句中文,就如将“洗衣机”分割为单独的字,在用将每个字赋值给数组,就如分割英语的话使用Regex.Split(input,"[^a-zA-Z0-9]+");
分割英文使:"[^a-zA-Z0-9]+";但不知分割中文使用什么正值表达式,求高手指教

------解决方案--------------------
你彻底混淆了一个基本概念,正则可不是用来理解含义的,所以它永远也不可能理解哪几个中文字可以成为一个中文词。正则只能用于定死了的格式,例如程序的if与while语句的区别是定死了的,或者例如英文单词——纯粹是空格分隔符区分的——这才用到正则。

如果你稍微学一点编辑技术就会知道,区分单字是最低级的功能。而要进行一定的语义分析,知道一个字跟前后字的关联,这就不是什么正则的范畴。
------解决方案--------------------
[\u4e00-\u9fa5]
------解决方案--------------------

string str="洗衣机";
string[] ss=Regex.Split(str,"([\\u4e00-\\u9fa5])");//正则解法
string[] tt=str.ToCharArray().Select(s=>s.ToString()).ToArray(); //方法二


其实这个不需要用正则,比如方法二