Visual Studio 代码中使用了什么正则表达式变体?

What regular expression variant is used in Visual Studio code?

我知道我可以在 tmLanguage 文件中使用 Ruby 的正则表达式,但是在其他配置文件中似乎并非如此,例如用于扩展。以 language contribution 中的 firstLine 值为例。当我使用字符 类 时出现错误(例如 \s\p{L})。因此,我想知道那里实际上允许什么。你会如何匹配那里的空格?

更新: 评论后我试过这个:

"firstLine": "^(lexer|parser)?\s*grammar\w+;"

应该匹配 lexer grammar G1;grammar G1; 这样的第一行。有没有办法测试该 RE 是否有效,因为我没有其他验证?

更新 2:

使用正确的语法很重要,它会神奇地起作用:

"firstLine": "^(lexer|parser)?\s*grammar\s*\w+\s*;"

.NET 正则表达式使用的语法主要基于 Perl 5,但它确实添加了一些新功能,例如命名捕获组和从右到左匹配,因此不应将两者视为相同。以下是 .NET 正则表达式的完整 MSDN 文档:

.NET Framework Regular Expressions

\s 是 .NET 中的有效字符 class,但如果不查看您正在尝试的代码,很难准确地说出问题所在。安德鲁可能是对的,你只是没有逃脱 \.