尝试在 Visual Studio Code 中进行搜索替换,我发现它的 Regex 风格与完整的 Visual Studio 不同。具体来说,我尝试使用 string (?<p>[\w]+)
声明一个命名组,该组在 Visual Studio 中有效,但在 Visual Studio Code 中无效。它会报错 Invalid group
。
除了解决这个特定问题之外,我还在寻找有关 Visual Studio Code 中正则表达式风格的信息以及在哪里可以找到有关它的文档,因此我可以帮助自己解决我可能偶然发现的任何其他问题。
完整的 Visual Studio 使用 .NET 正则表达式,如记录的 here。该链接在 Stackoverflow 的其他地方被称为 VS Code 的文档,但事实并非如此。
[^]
模式视为匹配任何符号的正则表达式引擎。所以,很明显它是 JS 正则表达式引擎。
文件侧栏中的查找/替换中的 Rust 正则表达式
Rob Lourens of MSFT 写道,文件搜索使用 Rust 正则表达式。 Rust language documentation 描述了语法。
https://i.stack.imgur.com/XSq5F.png
文件中的查找/替换小部件中的 JavaScript 正则表达式
Alexandru Dima of MSFT 写道,查找小部件使用 JavaScript 正则表达式。正如 Wicktor 评论的那样,ECMAScript 5's documentation 描述了语法。 MDN JavaScript Regular Expression Guide 也是如此。
https://i.stack.imgur.com/HeiEz.png
测试差异
文件中的查找侧边栏不支持 (?=foobar)
,而文件中的查找小部件确实支持该前瞻语法。
https://i.stack.imgur.com/PTvcq.png
关于查找/替换组
要查找/替换组,请使用括号 ()
进行分组,使用 $1
、$2
、$3
、$n
进行替换。
这是一个例子。
前:
https://i.stack.imgur.com/Lo9Ce.png
后:
https://i.stack.imgur.com/tBPeI.png
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!
https://i.stack.imgur.com/m8Gwq.png
我找到了关于它的更新信息(2020 年 7 月 22 日)。
IllusionMH 在 Github 中留下了以下 comment:
ripgrep(与 PCRE2 兼容)已用于在文件中查找功能(用于未打开的编辑器)和 JS 引擎仅用于打开的编辑器。
不定期副业成功案例分享