要求对字符串
"效力级别='001%' and 效力级别='02' and (效力级别 = '1010%' or 效力级别=001)" 
使用正则表达式进行提取,提取出的结果是:效力级别='001%'
效力基本='02'
效力级别='1010%'
效力级别=001请求高手帮忙 

解决方案 »

  1.   


                string str = "效力级别='001%' and 效力级别='02' and (效力级别 = '1010%' or 效力级别=001)";
                Regex reg = new Regex(@"效力[^=]+=\s*('?)[^'\)]+\1");
                foreach (Match m in reg.Matches(str))
                    Console.WriteLine(m.Value);
      

  2.   


            string str = "效力级别='001%' and 效力级别='02' and (效力级别 = '1010%' or 效力级别=001)";
            string result = string.Empty;
            Regex re = new Regex("效力级别\\s*=\\s*'?\\d*%?'?", RegexOptions.None);
            MatchCollection mc = re.Matches(str);
            foreach (Match ma in mc)
            {
                result += ma.Value;
            }//结果:
    //效力级别='001%'
    //效力级别='02'
    //效力级别 = '1010%'
    //效力级别=001
      

  3.   


    --------------------------------------------------------------------------------
    huangwenquan123大哥很好使,有个问题请教下\1是什么作用
      

  4.   

    \1是匹配捕获的第一个组里的内容
    原来都是效力级别,我还以为有个效力基本,那改成这样
                string str = "效力级别='001%' and 效力级别='02' and (效力级别 = '1010%' or 效力级别=001)";
                Regex reg = new Regex(@"效力级别\s*=\s*('?)[^'\)]+\1");
                foreach (Match m in reg.Matches(str))
                    Console.WriteLine(m.Value);
      

  5.   

    有个问题,我把字符串换成 (效力级别=001 and 效力级别 = 001 and 效力级别 =001 and  效力级别= 001 and 效力级别 = 001%  效力级别 ='001%') 这是什么问题求解
      

  6.   

                string str = "(效力级别=001 and 效力级别 = 001 and 效力级别 =001 and 效力级别= 001 and 效力级别 = 001% 效力级别 ='001%')";
                Regex reg = new Regex(@"效力级别\s*=\s*('?)\d+%?\1");
                foreach (Match m in reg.Matches(str))
                    Console.WriteLine(m.Value);