我正在创建一个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*\,)
您能帮助我使用功能代码并解释它的工作原理吗?考虑到事情可能会出现断线,如上例所示,或者全部在同一条线上
答案 0 :(得分:0)
这是一个开始,但这实际上是一个非常难的问题。
这个正则表达式是一个开始:
exec(ute)?\s+\S+\s+[^@]
exec(ute)?
\s+ whitespace
\S+ non-whitespace
\s+ whitespace
[^@] - any character that is not @
这只会检查第一个参数是" @"
如果有人放置类似"架构的空间,它也可能会失败。 procedurename",我认为这是有效的SQL。人们也可能通过在SQL中添加注释来搞砸它。