在visual-studio-code扩展名中返回一个单词 问题

我正在用打字稿在visual-studio-code中扩展。 而且我需要在'{{>'”前缀之后返回一个单词(结合点和连字符)。

{{>word-test }}
{{> word-test}}
{{> word-test }}
{{> word-test class="class_name"}}
// returns 'word-test'

// On this one the regex doesn't seem to work
{{> word-test 
    class="class_name"
}}
// returns all the text in the file

{{> word-test.test }}
// returns 'word-test.test'

要获取单词,我使用在visual-studio-code中内置的'getWordRangeAtPosition',并在参数中使用正则表达式。

问题

我尝试了几种正则表达式组合,但是当出现换行符时,我从来没有在visual-studio-code中返回“单词测试”。 相反,我得到了文件中的所有文本。

这是我尝试过的最新正则表达式组合:

/(?<={{>[ \s]{0,1})(.*?)(?=[\n\s\}\}])/

在regex测试器中一切正常,但在visual-studio-code本身中却没有。

请参阅正则表达式测试器:https://regexr.com/4o4d8

flyyan520 回答:在visual-studio-code扩展名中返回一个单词 问题

您可以在扩展代码中编写逻辑,而不是复杂的RegEx吗?

您可以找到位置上的单词,然后从文档的同一行中获取前导文本,并测试前导文本以{{>结尾:

let wordRange = document.getWordRangeAtPosition(position,/\w[-\w\.]*/g);
let leadingText = document.getText(new Range(wordRange.start.with({ character: 0 }),wordRange.start));
let hasCorrectPrefix = leadingText.match(/{{>\s?$/);

同样,如果确实需要该功能,则可以比较后缀。

本文链接:https://www.f2er.com/3166472.html

大家都在问