web-dev-qa-db-ja.com

Visual Studio 2012、2013、2015、およびVS Codeで正規表現の検索と置換を使用してキャプチャグループをどのように参照しますか

私はこれについて多くの質問があることを理解していますが、私が見つけたどの質問も、彼らがどのVSバージョンを参照したかを具体的に言及していませんでした。その重要な情報が不足しているため、見つけた答えをうまく使用することができませんでした。最も一般的なのは

  • {}で囲み、キャプチャを\ 1、\ 2、\ nで表示します

ただし、これはVisual Studioで正規表現の検索と置換を行う古い方法のようであり、VS 2012では機能しません。

205
SgtPooki

VS 2012およびVS 2015で検索および置換するには、次の手順を実行します。

(syonipに感謝)

検索オプションで、「正規表現を使用する」がチェックされていることを確認し、検索するテキストとして次を入力します。

_platformActions.InstallApp\((.+)\)

そして、それを置き換えるテキストとして次のとおりです。

this.Platform().App($1).Install()

注:SLaksが以下のコメントで指摘しているように、正規表現構文の変更は、VS2012が標準の.Net正規表現エンジンに切り替えられたためです。

注:別のコメント者は、これがVisual Studio Code(vscode)でも同様に機能することを指摘しました。

306
SgtPooki

この例を追加するために、ここでコードで実行しなければならないことがあります。

何を見つける:

_platformActions.InstallApp\((.+)\)

と置換する:

this.Platform().App($1).Install()

これにより、InstallApp(x)への呼び出しがthis.Platform()。App(x).Install()に置き換えられます。

*検索オプションで「正規表現を使用する」をマークすることを忘れないでください

14
syonip

上記の答えを改善するには:交換する必要があります

_platformActions.InstallApp\((.+)\)

this.Platform().App(${1}).Install()

キャプチャの後ろに数字を追加したい場合は、$ {1}に注意してください。 $18は、最初に8が追加されたものではなく、18番目の検索キャプチャを挿入しようとします。

4
Luc Bloom

グループ名を使用して作業する場合(上記と同じサンプルを使用):

何を見つける:

_platformActions\.InstallApp\((?<mygroupname>.+)\)

と置換する:

this.Platform().App(${mygroupename}).Install()
4
Yepeekai