想要获得:
  性别 = '男'
  启用 <> 0
  姓名 like '张%'
 三项.
其中 =,<>,like可能是其他标准sql的条件表达式“>=,>,<等”。

解决方案 »

  1.   

    =, <>,like
    MySQL支持这样的表达式
      

  2.   

    你就是想获得 $A $O $B吗?$O表示操作操作符
    $A表示左值
    $B表示右值可以这样\s+([^\s]+)\s*(<|>|=|like)+\s*?([^\s]+)
      

  3.   

    我想要:
                string source = "(性别 = '男' and 启用 <> 0) or (姓名 like '张%')";
                string regex = @"待定表达式";            MatchCollection matchs = Regex.Matches(source, regex, RegexOptions.IgnoreCase);
                foreach (Match m in matchs)
                {
                    string s = m.Value;//遍历分别输出三项:"性别 = '男'"、"启用 <> 0"、"姓名 like '张%'"
                }
      

  4.   

    string regex="(?i)(?<=where|and|or)((?!like)[^=<>])+(?:[=<>]+|like)((?!like)[^=<>])+(?=and|or|$)";
    试试。。
      

  5.   

              Regex g = new Regex(@"(?:\s?|(?:\(?))([^\s(]+)\s*( <|>|=|like)+\s*?([^\s)]+)");
                foreach (Match m in g.Matches("(性别 = '男' and 启用 <> 0) or (姓名 like '张%')"))
                {
                    Console.WriteLine(m.Value);
                    Console.WriteLine("{0}\n{1}\n{2}\n", m.Groups[1].Value, m.Groups[2].Value, m.Groups[3].Value);
                }
    输出:
    (性别 = '男'
    性别
    =
    '男'启用 <> 0
    启用
    >
    0(姓名 like '张%'
    姓名
    like
    '张%'把第一个是(的去掉就可以了
      

  6.   


    string regex="(?i)(?<=^|where|and|or)((?!like)[^=<>])+(?:[=<>]+|like)((?!like)[^=<>])+(?=and|or|$)";
    之前考虑成带where的了
      

  7.   

    string regex="(?i)(?<=^|and|or)((?!like)[^=<>])+(?:[=<>]+|like)((?!like)[^=<>])+(?=and|or|$)";既然不带where就把它去掉好了。。
      

  8.   

    string str=regex.split("","(and)|(or)");
    str=str.replace("(","");
    str=str.replace(")","");