请帮我创建一个正则表达式来解析我的SQL语句

时间:2009-02-26 15:48:47

标签: sql vb.net regex text-parsing

我想提取

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 个答案:

答案 0 :(得分:1)

这里的诀窍可能是用parens捕捉你真正想要的部分:

(FROM.*) order

这会贪婪地匹配,直到最后order,如果你只希望到第一次出现,就懒得匹配:

(FROM.*?) order

答案 1 :(得分: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)应该保持括号匹配

答案 2 :(得分:0)

如果归结为它,你可以通过做(F | f)(R | r)(O | o)(M | m)来忽略大写。

答案 3 :(得分:0)

RegexBuddy($ 40)或The Regex Coach(免费)等交互式工具可以帮助您设计和调试大多数平台的正则表达式。