如何在Visual Studio 2012、2013、2015和VS Code中引用正则表达式查找和替换的捕获组

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

  • 环绕{},显示捕获与\1,\2,\n

然而,这似乎是在Visual Studio中进行regex查找和替换的旧方法,它在VS 2012中不起作用。

118896 次浏览

要在VS 2012和VS 2015中查找和替换,请执行以下步骤:

例子(感谢syonip)

在查找选项中,确保选中了“使用正则表达式”,并将以下文本作为要查找的文本:

_platformActions.InstallApp\((.+)\)

并将下面的文字替换为:

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

正如SLaks在下面的评论中指出的,regex语法的变化是由于VS2012切换到标准的. net regex引擎。

注意:另一位评论者指出,这在Visual Studio Code (vscode)中也是有效的

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

找到:

_platformActions.InstallApp\((.+)\)

替换为:

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

这将用This . platform (). app (x). install()替换对InstallApp(x)的任何调用。

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

如果你想使用组名(使用与上面相同的示例):

找到:

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

替换为:

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

为了改善上述答案: 你应该替换

_platformActions.InstallApp\((.+)\)

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

如果你想在捕获后面添加一个数字,请注意$ {1}$18将尝试插入第18个搜索捕获,而不是第一个附加8的搜索捕获。

在VSCode v(1.61.1)在Ubuntu
我必须像$1
那样放置(*someExpression*) 所以现在我不需要使用额外的括号,比如($1)