捕获
   f1 like '%4' or f2<>5   成功的立刻结贴,一并拜师

解决方案 »

  1.   

    string connstr="select f1  ,f2,  f3   from t1   where   f1 like '%4' or f2<>5   order by  f1
    ";
    Regex r = new Regex(@"where(?<basename>.*)order",RegexOptions.Compiled);
    string where= r.Match(connstr).Result("${basename}");
      

  2.   

    不好意思,wyfwyf2000(云风):可能 我没有说清楚我的意思。我说的是通用的捕获方法,你这个正则表达式,一定得在Where子句后存在order才能正常工作。
    有可能是group by ,也有可能后面什么也没有。这样你还能做出来吗?
      

  3.   

    try
    string[] slist = {"select f1  ,f2,  f3   from t1   where   f1 like '%4' or f2<>5",
    "select f1  ,f2,  f3   from t1   where   f1 like '%4' or f2<>5   order by  f1",
    "select f1  ,f2,  f3   from t1   where   f1 like '%4' or f2<>5   group by  f1",
    "select f1  ,f2,  f3   from t1   where   f1 like '%4' or f2<>5   group by  f1 order by  f1"
    };
      Regex re = new Regex(@"where(.*?)(?:order|group|\s*$)", RegexOptions.IgnoreCase);
      foreach (string s in slist)
      {
    Match m = re.Match(s);
    if (m.Success)
    Console.WriteLine(m.Groups[1].Value);
      }
      

  4.   

    Regex r = new Regex(@"where(?<basename>.*)(order|group)",RegexOptions.Compiled);
    string where= r.Match(connstr).Result("${basename}");
    有条件就在(order|group)里补
      

  5.   

    Regex r = new Regex(@"where(?<basename>.*)(order|group|$\s*)",RegexOptions.Compiled);
    string where= r.Match(connstr).Result("${basename}");
      

  6.   

    虽然结了贴但是我想说:select f1  ,f2,  f3   from t1   where   f1 like '%order' or f2<>5   order by  f1无法正确分析
      

  7.   

    Regex re = new Regex(@"where(.*?)(?:\s+order|\s+group|\s*$)", RegexOptions.IgnoreCase);