想写一个正则表达式,去验证一个sql脚本文件中的delete 语句中必须有where条件,试写了几个,验证的都不够全面,该如何写呢,哪位高手能帮个忙,不胜感激!例如:select * from test delete from test update table set id =0 where name=123,这条sql语句包含了delete 但是没有where语句!
调试欢乐多
bool result = Regex.IsMatch(s, @"(?is)delete\s+from\s+\w+\s+where");
Response.Write(result);
MatchCollection mc = Regex.Matches(sql, @"(where|and)\s*(?=\S*\s*(?<t>\S+))(?<c>((?!\'t')\S)+)\s*\'t'\s*(?<v>@\S+)");
foreach (Match m in mc)
{
Console.WriteLine("列名:" + m.Groups["c"].Value);
Console.WriteLine("方式:" + m.Groups["t"].Value);
}
这个正则表达式好像把update的where条件,当做delete的where条件验证了。要是能在where之前排除select、update和insert就基本上完美了!
测试验证不出delte from ...where 语句,找不出来.麻烦能不能再看看。