regex 如何创建正则表达式来解析SQL语句

gzszwxb4  于 2023-03-20  发布在  其他
关注(0)|答案(4)|浏览(135)

我想提取

FROM codes WHERE FieldName='ContactMethod' and IsNull(Deactived,'') != 'T'

SELECT FieldDescription,FieldValue FROM codes WHERE FieldName='ContactMethod'
   and IsNull(Deactived,'') != 'T' order by fielddescription

使用正则表达式。我有这样一个正则表达式:

\FROM.*\order

其提取

FROM codes WHERE FieldName='ContactMethod' and IsNull(Deactived,'') != 'T' order

还有,我怎样才能去掉大写呢?

ig9co6j1

ig9co6j11#

扩展Fabian Steeg的答案

Dim regex As Regex = New Regex( _
          "(FROM.*?) ORDER", _
        RegexOptions.IgnoreCase _
        Or RegexOptions.CultureInvariant _
        Or RegexOptions.IgnorePatternWhitespace _
        Or RegexOptions.Compiled _
        )

    Dim ms As MatchCollection = regex.Matches(InputText)

其中InputText当然是SQL查询字符串。
ms(1)应保持括号匹配

0yg35tkg

0yg35tkg2#

如果是这样的话,你可以通过执行(F)来忽略大小写|f)(R|r)(命令|(男)|m)的规定。

rkkpypqq

rkkpypqq3#

RegexBuddy(40美元)或The Regex Coach(免费)这样的交互式工具将真正帮助您设计和调试大多数平台上的正则表达式。

oyt4ldly

oyt4ldly4#

这里的技巧可能是用括号捕捉你真正想要的部分:

(FROM.*) order

这将贪婪地匹配到最后一个order,如果您只想匹配到第一个匹配,则可以惰性地匹配:

(FROM.*?) order

相关问题