TL;DR 向我展示一個通用的 vscode 片段,將“/home/me/projects/project/src/Commands/Interfaces/Whatever”轉換為“Commands\Interfaces\Whatever”
大家好,我正在使用 Vscode 并試圖找出檔案目錄的簡單轉換以插入 PHP 命名空間。到目前為止,我無法找到一個簡單、通用的解決方案來解決這個看似平凡的問題:
- 有沒有辦法在片段中轉換 TM_DIRECTORY 變數的 PART,以便每個正斜杠變成反斜杠?
乍一看,這似乎很微不足道,對吧?從...開始
${TM_DIRECTORY/\\//\\\\/}
然后從那里建立起來。問題是,我只想捕獲檔案名的一部分,然后在捕獲的組上轉換斜杠,而不求助于固定/最大數量的檔案名組件(在這種情況下,有一個丑陋而冗長的解決方案)
以下是正確的方向嗎?如果是這樣,什么替換字串會導致 $1 組但斜杠恢復?
${TM_DIRECTORY/.*\\/src(\\/([^\\/] )) $/??????/}
提前致謝,可接受的回答是“除非您放寬要求,否則沒有辦法”,這更多是關于正則運算式功能的理論問題。
編輯:
感謝@WiktorStribi?ew,他找到了最簡單的解決方案,在我發布問題后,我想出了一個比他更復雜的表達方式:
${TM_DIRECTORY/(([^\\/] )\\/?(?=.*\\/src\\/))|(\\/src\\/)|((?<=\\/src\\/.*)\\/?([^\\/] ))/${5: \\\\}$5/g}
uj5u.com熱心網友回復:
您可以使用
"${TM_DIRECTORY/^.*?[\\\\\\/]src[\\\\\\/]|([\\\\\\/])/${1: \\\\}/g}"
請參閱正則運算式演示(\結果字串的開頭有一個額外的內容,因為無法像在 VS Code 中那樣引入條件替換模式)。
詳情:
^- 字串的開始.*?- 除換行符以外的零個或多個字符,盡可能少[\\\/]-/或\字符src- 您需要洗掉子目錄的目錄名稱[\\\/]- 一個/或\字符|- 或者([\\\/])- 第 1 組:a/或\字符。
該${1: \\}更換意味著我們將其替換\,只有當第1組比賽發生。
注意反斜杠需要加倍,g最后替換所有出現的。
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/389292.html
