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

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

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


当前回答

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

找到:

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

替换为:

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

其他回答

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

Surround with(),显示$1,$2,$n的捕获

示例(感谢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 \ ((+) \)

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

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

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

找到:

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

替换为:

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

在Ubuntu的VSCode v(1.61.1)中 我必须在$1中放置(*someExpression*) 此时我不需要使用额外的括号,比如($1)