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

Sgt*_*oki 231 visual-studio visual-studio-2012 visual-studio-2013 visual-studio-2015 visual-studio-code

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

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

但是,这似乎是在Visual Studio中进行正则表达式查找和替换的旧方法,并且它在VS 2012中不起作用.

Sgt*_*oki 336

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

示例(感谢syonip)

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

_platformActions.InstallApp\((.+)\)

以下作为替换它的文本:

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

注意:正如SLaks在下面的评论中指出的那样,正则表达式语法的变化是由于VS2012切换到标准.Net正则表达式引擎.

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

  • 更一般地说,VS2012现在使用标准的.Net正则表达式引擎. (10认同)
  • 也适用于Visual Studio Code (5认同)
  • 你不需要在`_platformActions`和`InstallApp`之间转义句点字符串吗? (4认同)
  • 最终我使用了命名,因为数字似乎至少对我不起作用。`(?<rval>.+)` 搜索和替换 `${rval}` (2认同)
  • 一些额外的帮助:如果您想用thing $ 18替换thing(。*)(捕获后直接添加“ 8”),则必须使用thing $ {1} 8 (2认同)

syo*_*nip 15

要添加一个这样的示例,我必须在我的代码中执行以下操作:

找什么:

_platformActions.InstallApp\((.+)\)
Run Code Online (Sandbox Code Playgroud)

用...来代替:

this.Platform().App($1).Install()
Run Code Online (Sandbox Code Playgroud)

这将替换对InstallApp(x)的任何调用,使用this.Platform().App(x).Install().

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


Luc*_*oom 7

要改善以上答案:您应该更换

_platformActions.InstallApp\((.+)\)

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

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


Yep*_*kai 6

如果要使用组名(使用与上述相同的示例):

找什么:

_platformActions\.InstallApp\((?<mygroupname>.+)\)
Run Code Online (Sandbox Code Playgroud)

用。。。来代替:

this.Platform().App(${mygroupname}).Install()
Run Code Online (Sandbox Code Playgroud)