Javascript ace编辑器未捕获组问题(?:)

Javascript ace编辑器未捕获组问题(?:),javascript,regex,editor,ace-editor,regex-lookarounds,Javascript,Regex,Editor,Ace Editor,Regex Lookarounds,全部, 我正在尝试使用ACE编辑器创建自己的模式。我试图定义一个非常简单的语法突出显示规则: this.$rules = { "start": [ { token : "string", regex : /(?:CONSUME)(MATCH)/, } ] }; 根据在线Javascript正则表达式测试人员的说法,regex/(?:CONSUME)(MATCH)/应该看到consumermatch

全部,

我正在尝试使用ACE编辑器创建自己的模式。我试图定义一个非常简单的语法突出显示规则:

this.$rules = {
    "start": [
        {
            token : "string", 
            regex : /(?:CONSUME)(MATCH)/,
        }
    ]
};
根据在线Javascript正则表达式测试人员的说法,regex/(?:CONSUME)(MATCH)/应该看到consumermatch并只返回MATCH。但是,ACE会突出显示所有符合此规则的用户

将以下代码插入Ace模式创建者()中,以便自己查看

(在下拉菜单中,我选择了Javascript模式和XCode主题。ConsumerMatch是我的测试文本,下面的代码是模式面板的内容。)


由于js正则表达式不提供确定匹配组在字符串中的位置的方法,Ace仅支持包含所有匹配或所有非匹配组的正则表达式。试用

{
    token : ["text", "string"], 
    regex : /(CONSUME)(MATCH)/,
}

相反。

哇,这非常有用。谢谢我在代码中看到了令牌的数组表示法,但找不到任何解释。另一个问题:是否有一个地方可以清楚地解释“states”如start和no_regex的含义,以及“next”的用途(在指定规则时有时与“token”和“regex”一起使用)?我发现ace的文档晦涩难懂,令人不满意。而且,ace似乎无法识别像“I”这样的修改标志。如果我尝试为规则编写不区分大小写的正则表达式,例如/rule/I,ace将捕获规则,但不捕获规则。只能为整个状态指定区分大小写,添加规则
{casesincensitive:true}
ace highlight rules creates state machine next是下一个状态的名称no_regex means/将被除法而不是正则表达式,start是状态机的第一个状态。关于我只知道的文档和这个旧文档。如果您在这些问题中找不到答案,请提出一个新问题,在stackoverflowAwesome上不允许发表长篇评论,这对我也很有用。那么API文档比at更清晰呢?例如,关于extending syntax highlighters(扩展语法高亮显示器)的页面上说:“语法高亮显示状态机保持在开始状态,直到您为它定义下一个要前进到的状态。此时,标记器保持在该新状态,直到它前进到另一个状态。之后,您应该返回到原始开始状态。”究竟是什么导致标记器从一个州前进到另一个州?我仍然不知道国家是如何运作的,也不知道它们是为了什么。
{
    token : ["text", "string"], 
    regex : /(CONSUME)(MATCH)/,
}