1

SQL ステートメントでバインド変数 (コロンで始まり、テキストを含む) を検索できるようにしたいと考えています。

SELECT * 
FROM TABLE 
WHERE TABLE_UID = :TABUID AND TABLE_TEXT = :TEXT

私は、この正規表現がバインド変数を見つけるために機能することを発見しました:

Regex reg = new Regex(":[\\w]*",
                      RegexOptions.Multiline & RegexOptions.IgnoreCase); 

foreach (Match m in reg.Matches(sql)) 
{
    bindVar.Add(m.Value); 
}

私が理解できないのは、引用符で囲まれた潜在的なバインド変数を無視する方法です:

SELECT * 
FROM TABLE 
WHERE TABLE_UID = :TABUID AND TABLE_TEXT = TO_DATE(:TEXT, 'hh:mi:ss')

:mi & :ss は正規表現で一致してはなりません。

4

3 に答える 3

2

正規表現を使ってあなたがやろうとしていることをするという知恵については少し不安ですが、私があなたなら、

  • 入力文字列のコピーを作成します
  • 入力文字列で不要なもの(この場合は引用符で囲まれたコンテンツ)を削除します
  • 今、あなたは引用符に何があるかについて心配する必要はありません
于 2013-01-07T21:10:29.440 に答える
0

単語境界を使用 \b

\\b:[\\w]*
于 2013-01-07T21:13:21.697 に答える
0

これは、一重引用符で囲まれていないものと一致します。

(?<![\\S'])([^'\\s]+)(?![\\S'])

私はそれをあなたがすでに持っているものと組み合わせる方法を知るほど精通していません.

于 2013-01-07T22:19:24.040 に答える