string test = @"'val1'val2'val3'val4";
            Regex reg = new Regex(@"val\d");
            MatchCollection mc = reg.Matches(test);
            foreach (Match m in mc)
            {
                Console.WriteLine(m.Value);
                Console.WriteLine("-------------------------");
            }            Console.ReadLine();
输出为:
val1
-------------------------
val2
-------------------------
val3
-------------------------
val4
-------------------------我想输出结果为:
val2
-------------------------
val4
-------------------------
我想实现左边先预测不能在''号内,谢谢!

解决方案 »

  1.   

    Regex reg = new Regex(@"(?<=')val\d(?=')");
      

  2.   

    木看懂什么意思。。
    论坛签名======================================================================gojia2011:你好!
    截至 2011-03-15 11:23:34 前:
    你已发帖 1 个, 未结贴 0 个;
    结贴率为: 100.00%

    当您的问题得到解答后请及时结贴.

    http://topic.csdn.net/u/20090501/15/7548d251-aec2-4975-a9bf-ca09a5551ba5.html
    http://topic.csdn.net/u/20100428/09/BC9E0908-F250-42A6-8765-B50A82FE186A.html
    http://topic.csdn.net/u/20100626/09/f35a4763-4b59-49c3-8061-d48fdbc29561.html如何给分和结贴?
    http://community.csdn.net/Help/HelpCenter.htm#结帖如何给自己的回帖中也加上签名?
    http://blog.csdn.net/q107770540/archive/2011/03/15/6250007.aspx
      

  3.   


                string str = @"'val1'val2'val3'val4";
                string result = Regex.Replace(str, @"'[^']*?'", "");
                Response.Write(result);
    /*
    val2 val4 
    */
      

  4.   

    补充:'val1val2val3'val4'val5'val6
    提取:val4,val6
    同时换成:<val1val2val3>val4<val5>val6
    也能匹配的
      

  5.   

    MatchCollection mc = Regex.Matches(yourStr,@"(?<=^([^']*('[^']*'))*)[^']+");
    foreach(Match m in mc)
    {
        //m.Value;就是你要的
    }
      

  6.   

                string test = @"'val1val2val3'val4'val5'val6";
                string test1 = "<val1val2val3>val4<val5>val6";
                Response.Write(Regex.Replace(test, @"(['<])[^'>]*?\1", " "));
                Response.Write("<br/>");
                Response.Write(Regex.Replace(test1, @"['<][^'>]*?['>]", " "));
    /*
     val4 val6
     val4 val6
    */
      

  7.   

                string test = @"'val1val2val3'val4'val5'val6";
                string test1 = "<val1val2val3>val4<val5>val6";
                foreach (Match m in Regex.Matches(test, @"['<][^'>]*?['>]([^'<]*)"))
                {
                    Response.Write(m.Groups[1].Value + "<br/>");
                }
                foreach (Match m in Regex.Matches(test1, @"['<][^'>]*?['>]([^'<]*)"))
                {
                    Response.Write(m.Groups[1].Value + "<br/>");
                }
    /*
    val4
    val6
    val4
    val6
    */
      

  8.   

    只有wuyazhe才明白我说的意思
      

  9.   

    (?<=^([^']*('[^']*'))*)[^']+断言么,你还是多看看过客的博客。这里的意思(?<=^([^']*('[^']*'))*)[^']+
    表示每次都从最头开始找,'配对的内容匹配出来,然后非'的内容就是''成对出现之外的内容。er,括号多了。(?<=^([^']*'[^']*')*)[^']+
    就可以了。
      

  10.   

    是不是想的太复杂了            string test = @"'val1'val2'val3'val4";
                Regex reg = new Regex(@"(val2)|(val4)");            MatchCollection mc = reg.Matches(test);
                foreach (Match m in mc)
                {
                    Console.WriteLine(m.Value);
                    Console.WriteLine("-------------------------");
                }结果:
    val2
    -------------------------
    val4
    -------------------------