如何获取与 VS Code 的 API 匹配的正则表达式的行号和字符位置?

How to get the line number and character position of regex match with VS Code's API?

我知道如何获取光标的位置:

editor.selection.active

这将产生如下结果:{ _character: 4, _line 1 }

现在,我想匹配一个字符或单词(在活动编辑器中)并获取它的行号和字符位置:

const editor = vscode.window.activeTextEditor
let text = editor.document.getText()
const match = text.match(/match/)

// What should I write here?

如何获取匹配(或第一个匹配)的行号和字符位置?

我在 Google 或 VS Code API 的文档中找不到任何内容。

使用TextDocument

中的方法
  • positionAt(offset: number): Position
    将基于零的偏移量转换为位置。

match 有一个偏移量(匹配开始)。

遍历文档的行,并计算行号:

const editor = vscode.window.activeTextEditor;
let lines = editor.document.getText().split(“\n”);

for (let i=0;i<lines.length;i++)
{
    const match = lines[i].match(/match/);
    if (match)
    {
        let char = match[1].index;
        let lineNb = i;
        break;
    }
}