我正在创建一个T-SQL脚本验证文件,以便它们遵循标准。我需要一个正则表达式,它将在python中执行,它可以在没有显式指定参数的情况下识别过程的执行。
右图:
exec schema.sp_procedure_name @parameterOne = 1, @parameter2 = 2
@parameter3 = 3, @parameter4 = 4或
exec schema.sp_procedure_name
@parameterOne = 1,
@parameter2 = 2
@parameter3 = 3,
@parameter4 = 4错误:
exec schema.sp_procedure_name 1, 2, 3, 4或
exec schema.sp_procedure_name2
1,
2,
3,
4我需要找出哪里出了问题,所以正则表达式应该在第二种情况下匹配,我已经阅读了一些手册、讲义和正则表达式论坛,但我仍然无法想到能够创建这样的表达式,到目前为止,我已经设法做到了,但您还没有回答我:
(exec(ute)?\s*\w+\.\w+\s*)(\w+\s*\,|.*\w+\s*\,)你能用一个功能代码来帮助我,并解释它为什么工作吗?考虑到事物可以出现在虚线中,就像上面的例子一样,或者都在同一行上
发布于 2017-07-06 01:41:10
这是一个开始,但这实际上是一个非常困难的问题。
这个正则表达式是一个开始:
exec(ute)?\s+\S+\s+[^@]
exec(ute)?
\s+ whitespace
\S+ non-whitespace
\s+ whitespace
[^@] - any character that is not @这将只检查第一个参数是否为"@“
如果有人放入像“schema.procurename”这样的空格,它也可能失败,我认为这是有效的SQL。人们也可能通过在SQL中添加注释来搞砸它。
https://stackoverflow.com/questions/44932531
复制相似问题