首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >不带命名参数的正则表达式find procedures

不带命名参数的正则表达式find procedures
EN

Stack Overflow用户
提问于 2017-07-06 01:26:53
回答 1查看 30关注 0票数 0

我正在创建一个T-SQL脚本验证文件,以便它们遵循标准。我需要一个正则表达式,它将在python中执行,它可以在没有显式指定参数的情况下识别过程的执行。

右图:

代码语言:javascript
复制
exec schema.sp_procedure_name @parameterOne = 1, @parameter2 = 2
@parameter3 = 3, @parameter4 = 4

代码语言:javascript
复制
exec schema.sp_procedure_name
@parameterOne = 1, 
@parameter2 = 2
@parameter3 = 3,
@parameter4 = 4

错误:

代码语言:javascript
复制
exec schema.sp_procedure_name 1, 2, 3, 4

代码语言:javascript
复制
exec schema.sp_procedure_name2
1,
2,
3,
4

我需要找出哪里出了问题,所以正则表达式应该在第二种情况下匹配,我已经阅读了一些手册、讲义和正则表达式论坛,但我仍然无法想到能够创建这样的表达式,到目前为止,我已经设法做到了,但您还没有回答我:

代码语言:javascript
复制
(exec(ute)?\s*\w+\.\w+\s*)(\w+\s*\,|.*\w+\s*\,)

你能用一个功能代码来帮助我,并解释它为什么工作吗?考虑到事物可以出现在虚线中,就像上面的例子一样,或者都在同一行上

EN

回答 1

Stack Overflow用户

发布于 2017-07-06 01:41:10

这是一个开始,但这实际上是一个非常困难的问题。

这个正则表达式是一个开始:

代码语言:javascript
复制
exec(ute)?\s+\S+\s+[^@]

exec(ute)?
\s+ whitespace
\S+ non-whitespace
\s+ whitespace
[^@]  - any character that is not @

这将只检查第一个参数是否为"@“

如果有人放入像“schema.procurename”这样的空格,它也可能失败,我认为这是有效的SQL。人们也可能通过在SQL中添加注释来搞砸它。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44932531

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档