0

.NET 正規表現を使用してコードをリファクタリングしたいと考えています。目的は、宣言と代入を分割することです (SQL 2005 との後方互換性のため)。

サンプル入力:

DECLARE @clientCode char(10), @city nvarchar(100) = '', @country char(2) = 'US',
   @clientId int

望ましい出力:

DECLARE @clientCode char(10), @city nvarchar(100), @country char(2),
   @clientId int
SELECT @city = '', @country = 'us'

これは、入力に一致するためにこれまでに持っているものです。

DECLARE\s+
(
    ,?
    (@\w+\s+)
    (\(.+\))?
    (\=\s+\w+)?
)+

期待される出力を得るために、どの正規表現を使用できますか?

4

2 に答える 2

1

余談ですが、SQL Server 2012 機能パックを手元に持っている場合は、 Microsoft.SqlServer.Management.SqlParser.Parserを使用して既存の SQL 20xx コードを解析し、同等の 2005 コードを生成できます。PowerShell を使用して行うこともできます。素敵な週末プロジェクトですね。:-)

于 2012-05-03T14:52:42.087 に答える
1

これを で動作させたRegExとしても、メンテナンスの悪夢になります。

よくコメントされた文字列操作をコードに書き出すことをお勧めします。

于 2012-05-03T11:36:13.243 に答える