Visual Studio Code使用什么样的Regex?

时间:2017-02-11 17:39:05

标签: regex replace visual-studio-code

尝试在Visual Studio Code中进行搜索替换,我发现它的正则表达式与完整的Visual Studio不同。具体来说,我尝试声明一个名为string (?<p>[\w]+)的命名组,该组在Visual Studio中工作,但在Visual Studio Code中不工作。它会对错误Invalid group抱怨。

除了解决这个特定问题外,我还在寻找有关Visual Studio Code中Regexes风格的信息以及在哪里找到有关它的文档,因此我可以帮助自己处理我可能偶然发现的任何其他问题。 / p>

完整的Visual Studio使用.NET正则表达式,如文档here所示。这个链接在Stackoverflow的其他地方被提到作为VS Code的文档,但它不是。

3 个答案:

答案 0 :(得分:130)

查找/替换文件边栏中的Rust Regex

Rob Lourens of MSFT写道,文件搜索使用Rust正则表达式。 Rust language documentation描述了语法。

Rob Lourens on GitHub

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

Alexandru Dima of MSFT写道,find小部件使用JavaScript正则表达式。正如Wicktor评论的那样,ECMAScript 5's documentation描述了语法。 MDN JavaScript Regular Expression Guide也是如此。

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.

答案 1 :(得分:5)

Shaun's answer仍然正确,但是要添加更新,请recently VS Code added选择使用基于基于Perl的PCRE2引擎的选项。您可以通过设置配置启用此功能。

这使您可以执行更高级的正则表达式操作,例如 lookaheads和backreferences 。但是,正如下面的noted一样,该正则表达式仍必须是有效的JavaScript正则表达式

  

VS Code确实支持正则表达式搜索,但是,   默认情况下不支持反向引用和环顾四周。但是你可以   通过设置 search.usePCRE2 启用这些功能。这将配置ripgrep   使用PCRE2正则表达式引擎。尽管PCRE2支持许多其他功能   功能,我们仅支持在仍然有效的正则表达式   JavaScript ,因为仍使用该编辑器的   基于JavaScript的搜索。

要获得奖励,如果您最终在这里尝试进行多行搜索,VS Code recently added that feature as well

enter image description here

答案 2 :(得分:1)

我发现了有关它的较新信息(2020年7月22日)。

IllusionMH在Github中留下了以下comment

ripgrep(与PCRE2兼容)已用于文件中的查找 功能(用于非开放式编辑器)和JS引擎仅用于开放式 编辑。