本帖最后由 air123456789 于 2010-09-13 16:37:07 编辑

解决方案 »

  1.   

    这个可以不用正则用split直接切开第一个和最后一个不要就是了
      

  2.   

            string a = @"\cf1\lang2052\f0\fs30 cf2哈哈,Word \par
    \cf2\f2\fs40 什么呢?cf2 \par
    \cf3\f2 Hello! 
    \cf4 不知道哦。f2 \par
    \cf2\f3 什么什么什么?";
            string pstr = @"^\\([^\\]*)\\[^ ]* ([^\\]*|.*$).*?$";
            MatchCollection mc = Regex.Matches(a, pstr, RegexOptions.Multiline);
            for (int i = 0; i < mc.Count; i++)
            {
                Response.Write(mc[i].Result("$1") + " " + mc[i].Result("$2") + "<br>");
            }
      

  3.   


    string a = @"\cf1\lang2052\f0\fs30 cf2哈哈,Word \par\cf2\f2\fs40 什么呢?cf2 \par\cf3\f2 Hello! \cf4 不知道哦。f2 \par\cf2\f3 什么什么什么?";
      这样 为什么就不行了? 我切一行 一行写 是为了让你看的更清楚的
      

  4.   

    string pstr = @"(cf\d+)[^ ]* ([^\\]*|.*?$)";
      

  5.   


                string a = @"\cf1\lang2052\f0\fs30 cf2哈哈,Word \par\cf2\f2\fs40 什么呢?cf2 \par\cf3\f2 Hello! \cf4 不知道哦。f2 \par\cf2\f3 什么什么什么?";            Regex reg = new Regex(@"(?<=\\)(cf\d)([\w\\]*) (.*?) ((?=\\)|(?=\\b))");            foreach (Match m in reg.Matches(a))
                {
                    Console.WriteLine(m.Groups[1].ToString() + " " + m.Groups[3].ToString());
                }
      

  6.   

    update
                string a = @"\cf1\lang2052\f0\fs30 cf2哈哈,Word \par\cf2\f2\fs40 什么呢?cf2 \par\cf3\f2 Hello! \cf4 不知道哦。f2 \par\cf2\f3 什么什么什么?";            Regex reg = new Regex(@"(?<=\\)(cf\d)([\w\\]*) (.*?)((?=\\)|(?=$))");            foreach (Match m in reg.Matches(a))
                {
                    Console.WriteLine(m.Groups[1].ToString() + " " + m.Groups[3].ToString());
                }结果
    cf1 cf2哈哈,Word
    cf2 什么呢?cf2
    cf3 Hello!
    cf4 不知道哦。f2
    cf2 什么什么什么?