You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Monaco Editor Monarch相邻括号合并为单Token,求正确匹配正则

解决方案

你遇到的相邻括号被合并为同一个Token的核心原因是:Monarch 分词器按规则从上到下的优先级匹配,优先返回最长匹配结果,你当前的括号匹配规则要么优先级低于其他通用符号匹配规则,被其他规则先命中了连续的()字符串,要么规则本身配置了多字符匹配量词。

按以下方式修改配置即可解决:

  1. 调整规则优先级,将括号匹配规则放到tokenizer对应状态规则的最顶部,确保括号优先被单字符匹配:
tokenizer: {
  root: [
    // 放在所有运算符、分隔符规则的最前面,优先匹配单个括号
    [/[{}()\[\]]/, '@brackets'],
    // 后续再放其他符号匹配规则,例:
    [/[+\-*/=<>!&|^%]+/, '@operator'],
    // 其余规则...
  ]
}
  1. 如果需要更精准的括号类型识别(方便后续自动补全逻辑判断左右括号),可以拆分定义不同括号的匹配规则,完全避免合并:
tokenizer: {
  root: [
    [/\(/, '@brackets.parentheses.open'],
    [/\)/, '@brackets.parentheses.close'],
    [/\{/, '@brackets.curly.open'],
    [/\}/, '@brackets.curly.close'],
    [/\[/, '@brackets.square.open'],
    [/\]/, '@brackets.square.close'],
    // 其余规则...
  ]
}

修改完成后使用「Developer: Inspect Tokens」功能验证,即可看到(和)被识别为两个独立的Token。

内容的提问来源于stack exchange,提问作者vmlopr

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.24 14:06:00