具有 3 个正则表达式替换的 Sublime 文本片段替换

Sublime text snippets substitutions with 3 regex replacements

我正在尝试制作一个片段,它会根据一个变量(路由器接口名称)的输入做 3 件事。 我已经使正则表达式正常工作,但它单独工作。

remove xx-           >>>>>       IS-${310/\w{2}-//g}-BUSINESS
replace / with _     >>>>>       IS-${310/\//_/g}-BUSINESS
ae make it capital   >>>>>       IS-${310/(ae)/\U/g}-BUSINESS

所以如果我进入一个普通的路由器界面,比如ge-1/2/21

结果应该> IS-1_2_21-BUSINESS

但是如果我进入ae31这样的界面

它应该成为首都 >>>> IS-AE31-BUSINESS

你的问题不包括你希望你的最终片段看起来像什么,所以这里有一个简单的片段示例,它将所有这三个操作组合成一个片段,你可以根据需要进行调整。

<snippet>
    <content><![CDATA[
# ${310}
IS-${310/(ae)|(?:(\w{2}-))|(?:(\/))/(?1\U:)(?2:)(?3:_)/g}-BUSINESS
]]></content>
    <tabTrigger>test</tabTrigger>
</snippet>

整体结构为${variable/regex/format_string/options}。正则表达式使用 Boost library regular expression and the format string uses a Boost library format string (see the page on snippets in the unofficial documentation 获取更多信息)。

Boost 格式字符串支持 (?Ntrue:false) 形式的条件替换,其中对于捕获组 N,替换为文本 true 如果匹配捕获任何内容或 false 如果没有。

此处捕获(或未捕获)正则表达式中的每个可能的替换,并且替换指定匹配组应扩展到的内容。请注意,在执行此类操作时,您可能需要注意不同可能匹配项之间的相互作用。