web-dev-qa-db-ja.com

Visual Studioの正規表現の検索と置換のヘルプ

次のようないくつかの代入ステートメントを置き換えたいと思います。

int someNum = txtSomeNum.Text; 
int anotherNum = txtAnotherNum.Text;

int someNum = Int32.Parse(txtSomeNum.Text);
int anotherNum = Int32.Parse(txtAnotherNum.Text);

正規表現を使用して、Visual Studioの検索と置換でこれを行う良い方法はありますか?正規表現がどうなるかわかりません。

38
David Hodgson

Visual Studioでは、式を中かっこ_{txtSomeNum.Text}_でマークできると思います。次に、置換では、_\1_で参照できます。したがって、置換行はInt32.Parse(\1)のようになります。


更新:経由@ Timothy003

VS 11は{}\1構文を廃止し、()$ 1を使用します

59
Mark Wilkins
7
solomonbicakcic

これは私が探していたものです:

検索:= {。* \。Text}

置換:= Int32.Parse(\ 1)

6
David Hodgson

元の問題のより良い正規表現は

expr。を見つける:{:i\.Text}

exprを置き換えます。:Int32.Parse(\ 1)

チェックアウト: http://msdn.Microsoft.com/en-us/library/2k3te2cs%28v=vs.100%29.aspx

vSでの正規表現の決定的なガイド。

私は最近、地獄から別のプログラマーのC++プロジェクトの再フォーマットを完了しました。彼は、スペースとタブ、インデント(またはそうでない)、および非常識なレベルの括弧のネストなどを完全かつ恣意的に入力またはランダムに省略していました。どんなタイプのコーディング標準にも慣れていた私たちの誰も、私が始める前にコードを読み始めることさえできなかったことに。異常な構造を見つけて修正するために正規表現を広範囲に使用しました。数時間で、実際にほとんどの問題を確認することなく、約125,000行のコードで主要な問題を修正することができました。特定の1つの検索/置換で、125ファイルの22,000行を超えるコードを変更しました。合計時間は10秒未満です。

正規表現で特に役立つ構文:

:b + == 1つ以上の空白および/またはタブ。

:i == Cスタイルの変数名またはキーワードに一致します(つまり、while、if、pick3、bNotImportant)

:Wh ==空白文字。;空白やタブだけではありません

:Sm ==任意の算術記号(+、-、>、=など)

:Pu ==句読点

\ n ==改行(8行または10行の空白行を挿入した場所を見つけるのに役立ちます)

^ ==行の先頭に一致します($は終了に一致します)

他の正規表現標準と一致するのは良かったのですが(duh)、コードベースの検索に非常に役立つMS拡張機能がいくつか見つかりました。たとえば、「識別子」を何百回も「[A- Za-z0-9] + "、代わりに単に":i "を使用します。

2
Ken