string str = "2012年前十个月,金融市场总体运行平稳。10月份,银行间市场债券发行量较上月略有减少,5年期以下债券发行比重有所上升;";
            string[] arr = Regex.Matches(str, "[^,。,.?!?!]+|[,。,.?!?!]+").Cast<Match>().Select(t => t.Value).ToArray();
结果:[2012年前十个月][,][金融市场总体运行平稳][。][10月份][,][银行间市场债券发行量较上月略有减少][,][5年期以下债券发行比重有所上升;]
string[] arr = Regex.Matches(str, "[^,。,.?!?!]+|[,。,.?!?!]").Cast<Match>().Select(t => t.Value).ToArray();
去掉最后的 +号 结果:[2012年前十个月][,][金融市场总体运行平稳][。][10月份][,][银行间市场债券发行量较上月略有减少][,][5年期以下债券发行比重有所上升;]
string[] arr = Regex.Matches(str, "[^,。,.?!?!]|[,。,.?!?!]+").Cast<Match>().Select(t => t.Value).ToArray();
去掉第一个 +号,结果:[2][0][1][2][年][前][十][个][月][,][金][融][市][场][总][体][运][行][平][稳][。][1][0][月][份][,][银][行][间][市][场][债][券][发][行][量][较][上][月][略][有][减][少][,][5][年][期][以][下][债][券][发][行][比][重][有][所][上][升][;]不明白为什么去掉第一个加号,会单独一个字分割成一个,而去掉最后的加号对结果没影响,朋友帮分析一下

解决方案 »

  1.   

    另外matchCollection为什么要用cast<match>转换成泛型?
      

  2.   

    这正则写的真够蛋疼,直接这样就可以得到你想要的结果了吧:
    string[] result=Regex.Split(@"([,。,.?!?!])");
      

  3.   

    string[] result=Regex.Split(@"([,。,.?!?!])");末尾出现 [5年期以下债券发行比重有所上升][;][] 一个空的,不知道为什么啊?