0

我要提取

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

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

谢谢

4

4 回答 4

1

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

(FROM.*) order

这将贪婪地匹配直到最后一个order,如果你只想直到第一次出现,就懒惰地匹配:

(FROM.*?) order
于 2009-02-26T15:52:42.883 回答
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) 应该保持括号匹配

于 2009-02-26T16:17:26.240 回答
0

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

于 2009-02-26T16:00:57.560 回答
0

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

于 2009-02-26T16:24:07.613 回答