VisualStudio 代码使用什么样的正则表达式?

试图在 VisualStudio 代码中搜索-替换,我发现它的正则表达式风格与完整的 VisualStudio 不同。具体来说,我尝试使用 string (?<p>[\w]+)声明一个命名组,该组在 VisualStudio 中工作,但在 VisualStudio 代码中不工作。它会报告错误 Invalid group

除了解决这个特定的问题之外,我还在寻找有关 Visual Studio Code 中正则表达式风格的信息,以及在哪里可以找到有关它的文档,这样我就可以帮助自己解决可能碰到的任何其他问题。

全视觉工作室使用。NET 正则表达式,如文档 给你所示。这个链接在 Stackoverflow 的其他地方作为 VS Code 的文档被提到,但它不是。

129507 次浏览

在文件侧边栏的查找/替换中生锈正则表达式

MSFT 的 Rob Louren 写道,文件搜索使用 Rust regex。

Rob Lourens on GitHub

文件部件中的查找/替换中的 JavaScript 正则表达式

MSFT 的 Alexandru Dima 写道 find 小部件使用 JavaScript 正则表达式。正如 Wicktor 所说,ECMAScript 5的文档描述了语法。正则表达式指南也是。

Alexandru Dima on GitHub

测试差异

“文件中的查找”侧栏不支持 (?=foobar),而“文件中的查找”小部件则支持这种前瞻语法。

Shows a lookahead working in the widget but not in the sidebar.

关于用组查找/替换

要查找/替换组,使用括号 ()进行分组,并使用 $1$2$3$n进行替换。

这里有一个例子。

以前:

This is the text before the replace.

之后:

This is the text after the replace.

Shaun 的回答 仍然是正确的,但是要添加更新,最近增加了 VS 代码选项可以选择使用 基于 Perl 的 PCRE2引擎。可以通过设置配置启用此选项。

这允许您执行更高级的正则表达式操作,如 前瞻性和回顾性。但是由于下面的 知道了,正则表达式仍然必须是 有效的 JavaScript 正则表达式

VS 代码确实支持正则表达式搜索,但是, 默认情况下不支持回溯引用和查找 使用 UsePCRE2设置启用这些 使用 PCRE2正则表达式引擎 特性,我们只支持 < strong > 仍然有效的正则表达式 JavaScript ,因为打开的编辑器仍然使用编辑器的 基于 JavaScript 的搜索。

为了奖金如果你最终在这里尝试做多行搜索,VS Code 最近也添加了这个特性

enter image description here

我找到了关于它的更新的信息(2020年7月22日)。

IllusionMH 在 Github 留下了以下 评论:

Ripgrep (与 PCRE2兼容)已经用于在文件中查找 功能(对于未打开的编辑器)和 JS 引擎仅用于打开 编辑。