VS Code正则替换问题:将[[x|x]]批量替换为[[x]]
VS Code 批量处理双括号内的搜索替换
问题根源
你之前用的\[\[.*\|(.*)\]\]是贪婪匹配,.*会尽可能匹配更多内容,导致从第一个[[开始一直匹配到最后一个]],把整段内容都替换了。而锚定正则^\[\[.*\|(.*)\]\]$要求整行只有单个[[...|...]]结构,自然匹配不到包含多个实例的行。
正确正则方案
- 搜索正则:
\[\[([^\|]+)\|([^\|]+)\]\]
核心是用[^\|]+替代.*,[^\|]表示匹配非竖线的任意字符,这样只会匹配单个[[...|...]]结构内的内容,不会跨实例匹配。 - 替换内容:
[[$1]]
(如果需要保留竖线右侧的内容,替换为[[$2]]即可)
操作步骤
- 打开VS Code的搜索替换面板(快捷键
Ctrl+H) - 点击面板右上角的
.*按钮,开启正则匹配模式 - 在搜索框输入上述正则表达式
- 在替换框输入
[[$1]] - 点击「替换全部」,即可批量处理所有目标实例
效果示例
原文本:
[[123|123]] and [[4567|4567]], also [[89|89]].
替换后:
[[123]] and [[4567]], also [[89]].
内容的提问来源于stack exchange,提问作者Havoc's Call
相关产品推荐
相关产品推荐

