2017-02-22 1 views
0

私はデータベースをSQLプロジェクトに移行する作業をしており、クロスデータベース呼び出しのすべてのインスタンスをSQLCMD変数に置き換える必要があります。私はまだ更新する必要がある場所を見つけるのを助けるための正規表現です。 SQLでコメントアウトされていない非カプセル化テキストを見つけるための正規表現

、我々は次のようしている:

私はに変更する必要が
MyOtherDatabase.MySchema.MyTable 
[MyOtherDatabase].MySchema.MyTable 

:これまでのところ、私は、次の正規表現を作ってみた

[$(MyOtherDatabase)].MySchema.MyTable 

([^(]M|^M)yOtherDatabase 

「MyOtherDatabase」が使用され、変数に置き換えられていないすべての場所を検出します。これが唯一の少数の例だった場合、私はそれと一緒に暮らす、私と思い

-- I don't want to find MyOtherDatabase in this line 

FROM ADifferentPlace -- Used to be MyOtherDatabase 

は、しかし、それはまたのような、SQLコメントでそれを拾っています現在560件のマッチがありますが、そのうちの大部分は上記のいずれかであり、人為的ミスが非常に起こりやすくなっています。

私は正規表現を使用するチェックボックスをオンにして、Visual Studio 2015の[検索]ボックスでこの正規表現を使用しています。

アドバイスは役に立ちます!

編集

また次を見つけることができませんする必要があります。

from MyTable -- from MyOtherDatabase.MySchema.MyTable 
+0

https://regex101.com/r/2fdzEa/2 –

答えて

2

ご使用の環境に可変長負lookbehindsをサポートしている場合には、すべてのコメントセクションマッチするのを避けるために、以下を使用することができます。

search for (?<!--.*)MyOtherDatabase(?=]?\.) 
replace by $(MyOtherDatabase) 

まだ開始していない場合でも、開始からの行を一致させることができます。

search for ^((?:[^-]|-[^-])*)MyOtherDatabase(]?\.) 
replace by \1$(MyOtherDatabase)\2 
+0

ほぼ!これは約200の結果に私を落とすが、私はまだ偽陽性を見つける。質問を更新して、まだ他に何が集められているのかを示します。 – Sk93

+0

Perfecto!ちょうど7試合にダウン - 歓声! – Sk93

+0

@ Sk93可変長ネガティブなルックアヘッドは機能しましたか? – Aaron

関連する問題