TMLanguage,捕获是做什么的?

TMLanguage, what does captures do?

我正在为 vscode 开发一个 tm 语言项目,我想知道模式上的 captures 属性 究竟做了什么。

我似乎无法弄清楚捕获对象的索引代表什么,我在网上找不到任何相关信息。

示例

{
    "match": "(group 1)(group2)"
    "captures": {
        "0": {
             "name": "Name of first capture group? What does 0 mean here?"
         }
    }
}

此处记录了“捕获”键,在“规则键”部分 (12.3):

https://macromates.com/manual/en/language_grammars

该名称不是第一个捕获组的名称。它只是一个字符串,指定要应用于与该捕获组匹配的字符的样式名称。当我说“捕获组”时,我指的是正则表达式中匹配的左括号和右括号。

使用“捕获”键为文档中的字符指定样式名称是一种相对复杂的方法。它允许您为正则表达式匹配的文本的不同部分指定不同的样式。一种更简单的方法是只使用“名称”键,这会将样式应用于所有匹配的文本。