如何在Visual Studio 2012,2013和2015中使用正则expression式查找和replace来引用捕获组

我意识到有很多这方面的问题,但没有一个我发现特别引用了他们提到的VS版本。 由于缺乏这些重要的信息,我仍然无法成功地使用我find的答案。 最常见的是

  • 用{}环绕,用\ 1,\ 2,\ n显示捕捉

但是,这似乎是在Visual Studio中执行正则expression式查找和replace的旧方法,并且在VS 2012中不起作用。

要在VS 2012和VS 2015中查找和replace,请执行以下操作:

  • 用()包围,用$ 1,$ 2,$ n显示捕捉

例子 (感谢syonip)

在查找选项中,确保选中“使用正则expression式”,并将以下内容作为文本查找:

_platformActions.InstallApp\((.+)\)

而下面的文字就是用它来代替的:

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

注意:正如SLak在下面的注释中指出的那样,正则expression式语法的改变是由于VS2012切换到标准的.Net正则expression式引擎。

注意:另一位评论者指出,这也适用于Visual Studio代码(vscode)

要添加一个这样的例子,这是我在我的代码中必须做的事情:

找什么:

 _platformActions.InstallApp\((.+)\) 

用。。。来代替:

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

这将使用this.Platform()。App(x).Install()来取代对InstallApp(x)的调用。

*不要忘记在查找选项中标记“使用正则expression式”

如果您想使用群组名称(使用与上面相同的样本):

找什么:

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

用。。。来代替:

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