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

标签 regex sublimetext3 sublimetext-snippet

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

remove xx-           >>>>>       IS-${310/\w{2}-//g}-BUSINESS
replace / with _     >>>>>       IS-${310/\//_/g}-BUSINESS
ae make it capital   >>>>>       IS-${310/(ae)/\U$1/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$1:)(?2:)(?3:_)/g}-BUSINESS
]]></content>
    <tabTrigger>test</tabTrigger>
</snippet>

整体结构为${variable/regex/format_string/options}。正则表达式使用 Boost library regular expression并且格式字符串使用 Boost library format字符串(有关更多信息,请参阅 snippets 中关于 unofficial documentation 的页面)。

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

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

Snippet in action

关于regex - 具有 3 个正则表达式替换的 Sublime 文本片段替换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50121434/

相关文章:

javascript - 触发 SublimeText 自定义片段时如何省略(或删除)自动匹配括号?

javascript - 使用 javascript 正则表达式使引用的文本变得漂亮

regex - 设置字符串之间的匹配数字

python - 将 re.findall 创建的列表拆分为单个单词,然后计算每个单词的出现次数,按出现次数降序排列

html - Sublime : disable pink highlighting on boolean operators inside AngularJS directives

sublimetext3 - 使用Sublime编辑Yocto文件,导致bitbake server启动失败

sublimetext2 - 在 Sublime Text 编辑器中了解文件是否有未保存更改的视觉提示

java - Sublime Text 3 获取和设置片段 Java

c - Sublime Text C 插件——代码模板和自动完成

javascript - 将用户特定的 URL 列表与当前 URL 进行比较?