簡體   English   中英

在 visual-studio-code 擴展中返回一個單詞

[英]Return a word in a visual-studio-code extension

我正在 typescript 中的 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\}\}])/

它在正則表達式測試器中一切正常,但在 visual-studio-code 本身中卻不行。

請參閱正則表達式測試器: https://regexr.com/4o4d8

您可以在擴展代碼中編寫邏輯而不是復雜的 RegEx 嗎?

可以在 position 上找到這個詞,然后從文檔的同一行獲取前導文本,並測試前導文本是否以{{>結尾:

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?$/);

同樣,如果功能確實需要,您可以比較后綴。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM