首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何测试表达式对VS代码中的TextMate语法是否有效?

如何测试表达式对VS代码中的TextMate语法是否有效?
EN

Stack Overflow用户
提问于 2022-04-16 15:57:46
回答 1查看 240关注 0票数 0

我试图使用VS代码的标记化引擎进行语法注入,我不明白为什么有些正则表达式会失败。

例如,假设我有以下文本。

代码语言:javascript
复制
VS Code, TextMate grammars, and Oniguruma regular expressions. 

然后,我希望使用以下Oniguruma (即见演示)来匹配regex

代码语言:javascript
复制
(?=and\s+(Oniguruma)\s+regular)

基于上面的演示,正则表达式似乎匹配(捕获?)我想要什么(即,见下文)。

然而,当在VS代码语法的上下文中尝试这一点时,它失败了。更具体地说,./syntaxes/some.test.injection.json文件包含:

代码语言:javascript
复制
{
    "scopeName": "some.test.injection",
    "injectionSelector": "L:text.html.markdown",
    "patterns": [
        { "include": "#test" }
    ],
    "repository": {
        "test": {
            "match": "(?=and\\s+(Oniguruma)\\s+regular)",
            "captures": {
                "1": { "name" : "some.test" }
            }
        }
    }
}

然后,在package.json中我有:

代码语言:javascript
复制
{
    // ...
    "contributes": {
        "grammars": [
            {
                "scopeName": "some.test.injection",
                "path": "./syntaxes/some.test.injection.json",
                "injectTo": ["text.html.markdown"]
            }
        ]
    },
    // ...
}

最后,settings.json中的标记颜色规则如下所示:

代码语言:javascript
复制
{
    "editor.tokenColorCustomizations": {
        "textMateRules": [
            { "scope": "some.test", "settings": { "foreground": "#dfd43b" } },
        ]
    }
}

正如您在下面看到的,令牌没有被解析:

但是,当我使用以下regex (即见演示)时,令牌将被解析:

代码语言:javascript
复制
(?<=and\s)(Oniguruma)(?=\s+regular)

在检查编辑器令牌和作用域时可以看到:

VS代码文档 (即见下文)中,我了解到我需要使用Oniguruma正则表达式:

TextMate语法依赖于Oniguruma正则表达式,通常以plist或JSON的形式编写。您可以在这里找到关于TextMate语法的一个很好的介绍,您可以查看现有的TextMate语法,以了解它们如何工作。

我的问题有两个:

  1. 为什么第一个表达式失败?它不是一个有效的Oniguruma正则表达式吗?
  2. 如何测试正则表达式是否是有效的Oniguruma正则表达式?
EN

回答 1

Stack Overflow用户

发布于 2022-08-12 18:13:16

VSCode使用TextMate作为令牌化引擎,TextMate使用oniguruma引擎作为Regex。

Ruby 1.9+使用oniguruma引擎[医]风疹使用ruby2.5.9

我已经使用Rubular来验证我的VSCode TM语法一段时间了,而且它从未失败过一次。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71895384

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档