我正在做一个视频演播室代码,打字稿的分机。我需要在‘{>前缀之后返回一个单词(连同点和连字符)。
{{>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代码中内置的'getWordRangeAtPosition',参数中有正则表达式。
问题所在
我已经尝试了一些正则组合,但是当有一个行中断时,我永远不会得到在visual-studio代码中返回的“word-test”。相反,我会得到文件中的所有文本。
下面是我尝试过的最近的regex组合:
/(?<={{>[ \s]{0,1})(.*?)(?=[\n\s\}\}])/它在regex测试器中工作得很好,但在visual-studio代码本身就不起作用了。
参见regex测试器:https://regexr.com/4o4d8
发布于 2019-11-07 10:18:30
而不是一个复杂的RegEx,您能用扩展代码编写逻辑吗?
您可以找到单词on leading,然后从文档中的同一行中获取前面的文本,并测试前面的文本是否以{{>结尾。
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://stackoverflow.com/questions/58694261
复制相似问题