2009-02-26 2 views
0

正規表現を使用して、私のSQL文を解析する正規表現を作成してください

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 

また、どのように大文字を取り除くことができますか?

ありがとう

+0

どのような環境で正規表現の "フレーバー"を使用していますか? –

+0

私はVb.net – Mithil

答えて

1

は、ここでのトリックはおそらく、あなたが実際に括弧でたい部分をキャプチャすることです:あなたが唯一の最初に出現するまで、必要な場合

(FROM.*) order 

これは貪欲、最後orderまで一致しますが、なまけ試合:

(FROM.*?) order 
+0

を使用していますが、これは動作しますが、私は "Order"という単語を望んでいません。 "FROM"という単語から単語 "order" "オーダー"でも大文字と小文字を区別しません。 – Mithil

+0

それは(括弧)が何であるかではありませんか? –

+0

フィールド名= 'ContactMethod'とIsNull(Deactived、 '')!= 'T' order " – Mithil

0

それに降りてくる場合は、実行して総額を無視することができます(Fを| F)(R | R)(O | O)(M | M)。ファビアンシュテークの答えのinputTextはもちろん、あなたのSQLクエリ文字列である

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) 

に拡大

+0

yup..thatは大文字と小文字を区別する問題を解決します。私はまだ私が欲しくない "秩序"という言葉を得ています。私は(from | FROM。*)order | ORDER – Mithil

+0

を使用しています。ほぼすべての正規表現フレーバは、大文字小文字を区別しないフラグをサポートしています。 –

1

MSは、(1)括弧は本当にあなたが設計し、ほとんどのプラットフォーム用のデバッグ正規表現のために役立つだろう

0

インタラクティブRegexBuddyのようなツール($ 40)がまたはThe Regex Coach(無料)と一致保持する必要があります。

関連する問題