私は、作成関数やストアプロシージャなどのコマンドを含む一種の大きなSQLスクリプトを解析しようとしています。 GO文が見つかるたびに文字列でファイルを分割したい(SMOの代わりに通常のADO.NETを使用して実行したい)。正規表現を使用してSQLスクリプトファイル内のすべてのGOを削除する
問題は、それまでのところ適切な正規表現が見つからないということです。大文字小文字を区別しないで簡単に\bGO\b
を使用すると、分割されます。しかし、またすべてが
のようなコメント内(複数可)に行く分割します - これは行くことも、ほとんど私の問題を解決するが、私は2つの連続したGOを持っているとき、私はいくつかのエラーを取得し、この表現^\bGO\b[^--]$
を使用して
を分割されます(それは何らかの理由でそこにあり、私のドメインの後ろにある)。
end
go
GO
これは、スクリプトの作成がスクリプト内でどのように見えるかを示しています。
私はC#でどうもありがとう
** EDITそれをやっている
**
同僚は今のところ、すべてのために働いて、解決策を考え出しました私のスクリプト
^\s*go\s*\r\n
詳しい情報は、私たちはあなたにこのため、「やる-すべてを」正規表現パターンを与えるようにするために必要とされます。ここでは
は、私が使用したテストケースです。ちょうど一般的に、私はこれのための "サンドボックス"ユニットテストを設定します。削除したくないGOのパターンを含むリテラルを設定し、それらのパターンのそれぞれに「候補」正規表現アルゴリズムを適用し、結果のテキストがあなたが望むものであると主張します。あなたの特定の正規表現を渡したり失敗したりするテストは、正規表現を変更する方法の手がかりになるはずです。あなたが行ったり削除したくないパターンの例をもっと教えてくれれば、私たちがあなたを助けてくれるでしょう。 – KeithS@Andres少し話題外です:** '^ \ bGO \ b [^ - ] $' **は本当に動作しますか?私は、あなたが〜を避けたいと思うかもしれないと思っています。 – GolfWolf
@KeithSは、SP、関数、ビューを作成するすべてのデータベースソースに適用されるため、例を挙げにくいです。しかし、基本的には非常に多様なSQLファイルソースです。私は/ * ... * /の間のコメント付きコードでいくつかの問題を抱えていただけでなく、 'go'動詞のような行のコメントのように - これは行くべきである... – Andres