Я работаю над языковым проектом tm для vscode, и мне интересно, что именно делает свойство 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
Имя не является именем первой группы захвата. Это просто строка, указывающая имя стиля, применяемого к символам, совпавшим с этой группой захвата. Когда я говорю «группа захвата», я имею в виду совпадающую левую и правую скобки в вашем регулярном выражении.
Использование клавиши «захвата» — относительно сложный способ присвоения имен стилей символам в документе. Это позволяет указать разные стили для разных частей текста, соответствующих регулярному выражению. Более простой способ — просто использовать клавишу «имя», которая применит стиль ко всему совпавшему тексту.
захват
0
означает всю строку, это полезно только вbeginCaptures
иendCaptures
, вы используетеcaptures
в других случаях, если вам нужно много сопоставить перед фактическим текстом (переменная просмотра назад)