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,但如果不查看您正在尝试的代码,很难准确地说出问题所在。安德鲁可能是对的,你只是没有逃脱 \
.
我知道我可以在 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,但如果不查看您正在尝试的代码,很难准确地说出问题所在。安德鲁可能是对的,你只是没有逃脱 \
.