繁体   English   中英

使用正则表达式从C#中的SQL语句中查找SQL函数

[英]Find SQL function from SQL statement in C# using regex

我想解析一个SQL语句,该语句可能在查询文本中使用SQL函数。 现在使用C#正则表达式,我想解析字符串并检查查询中是否使用了任何函数名并将其提取。 查询中可能使用了多个函数,并且每个函数可以具有n个以前未知的参数。

select * from fnTest(@A, @B) 
select x.* from fnTest(@A, @B) x join fnHelloWord(@C, @D, @E) y on x.SomeID = y.OtherID
  • 在第一个示例中,正则表达式将返回字符串值fnTest
  • 在第二个示例中,正则表达式将返回函数名称字符串的列表,例如fnTestfnHelloWord

如果您的字符串类似于显示的字符串,则可以使用如下正则表达式:

\w+(?=\()

工作演示

在此处输入图片说明

顺便说一句,如果您想获取正则表达式内容,请使用捕获组,例如:

(\w+)(?=\()

比赛信息:

MATCH 1
1.  [14-20] `fnTest`
MATCH 2
1.  [46-52] `fnTest`
MATCH 3
1.  [68-79] `fnHelloWord`

使用正则表达式:

@"([a-zA-Z0-9_]*)\([^\)]*\)"

基本上([a-zA-Z0-9]*)匹配标识符(az,AZ或0-9)并捕获它, \\(匹配左括号, [^\\)]*匹配任意多个不是右括号,然后最后\\)匹配右括号。

另外,您可以使用正则表达式:

@"(\w*)\([^\)]*\)"

因为\\w匹配[a-zA-Z0-9_]

为了增加Fede的答案 ,您可能还需要在函数名称和右括号之间一些空白。

例如\\w+\\s*(?=\\()

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM