首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >返回visual-studio代码扩展名中的一个单词。

返回visual-studio代码扩展名中的一个单词。
EN

Stack Overflow用户
提问于 2019-11-04 13:18:21
回答 1查看 514关注 0票数 0

我正在做一个视频演播室代码,打字稿的分机。我需要在‘{>前缀之后返回一个单词(连同点和连字符)。

代码语言:javascript
复制
{{>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组合:

代码语言:javascript
复制
/(?<={{>[ \s]{0,1})(.*?)(?=[\n\s\}\}])/

它在regex测试器中工作得很好,但在visual-studio代码本身就不起作用了。

参见regex测试器:https://regexr.com/4o4d8

EN

回答 1

Stack Overflow用户

发布于 2019-11-07 10:18:30

而不是一个复杂的RegEx,您能用扩展代码编写逻辑吗?

您可以找到单词on leading,然后从文档中的同一行中获取前面的文本,并测试前面的文本是否以{{>结尾。

代码语言:javascript
复制
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?$/);

类似地,如果功能确实需要的话,可以比较后缀。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58694261

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档