想要获得:
性别 = '男'
启用 <> 0
姓名 like '张%'
三项.
其中 =,<>,like可能是其他标准sql的条件表达式“>=,>,<等”。
性别 = '男'
启用 <> 0
姓名 like '张%'
三项.
其中 =,<>,like可能是其他标准sql的条件表达式“>=,>,<等”。
解决方案 »
- 如何调用类中正则表达方法来验证?
- c#调用c++DLL的动态链接库问题?
- vs 2008 下开发开发安装部署项目遇到问题(顶者有分)
- vs2010 无法添加数据连接
- 如何自定义窗体的显示位置?
- 百分求语言PHP改写为.Net。。。
- C#中查询mdb是否有相同数据如果没有就插入数据库帮我分析哪错了?
- 为什么 用CheckedListBox1.CheckedItems[i].ToString() 没有获得值 打印出来的是System.Data.DataRowView
- WPF,请问如何让表里的Header绑定变量?
- vs2010实时调试
- 在Panel上画直线(求方法)
- dataGridView直接更新数据库的某个字段
MySQL支持这样的表达式
$A表示左值
$B表示右值可以这样\s+([^\s]+)\s*(<|>|=|like)+\s*?([^\s]+)
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 '张%'"
}
试试。。
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
'张%'把第一个是(的去掉就可以了
string regex="(?i)(?<=^|where|and|or)((?!like)[^=<>])+(?:[=<>]+|like)((?!like)[^=<>])+(?=and|or|$)";
之前考虑成带where的了
str=str.replace("(","");
str=str.replace(")","");