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

问题描述 投票:0回答:4

我要提取

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

另外,我怎样才能摆脱大写?

sql vb.net regex text-parsing
4个回答
1
投票

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

(FROM.*) order

这会贪婪地匹配到最后一个

order
,如果你只想直到第一次出现,就懒惰地匹配:

(FROM.*?) order

1
投票

扩展 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) 应该保持括号匹配


0
投票

归根结底,您可以通过 (F|f)(R|r)(O|o)(M|m) 忽略大写。


0
投票

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

© www.soinside.com 2019 - 2024. All rights reserved.