本帖最后由 shencb 于 2012-01-10 11:23:12 编辑

解决方案 »

  1.   

    string pattern = @"(?is)\s*(SELECT\s+(?<select>.*?))?\s+(FROM\s+(?<from>.*?))?\s+(WHERE\s+(?<where>.*?))?\s+(GROUP\s+by\s+(?<groupby>.*?))?\s+(Having\s+(?<having>.*?))?\s+$";
      

  2.   


                input=Regex.Replace(input, @"(?is)SELECT|FROM|WHERE|GROUP\s+BY|HAVING", "").Replace("  ","");
                
      

  3.   

    (?is)(?<=select).*(?=from)|(?<=from).*(?=where)|(?<=where).*(?=group by)|(?<=group by).*(?=having)|(?<=having).*
      

  4.   

    正则的目的是根据提供的字符串取出相应的内容,至于在SQL里面是否是正确的语法,还要另作判断
      

  5.   

    嗯,我也是这么想的,
    不进行语法检测,只提炼内容,
    不过我希望,正则能在这个语句不包容where的情况下依然能提炼出相应的语句。当我去掉where后,进行正则匹配的时候,不能获得相应的内容。
    现在正在修改你提供的正则语句。