如何编写适配VSCode的正则来替换Markdown URL中的空格为%20?
VSCode 批量替换Markdown链接URL内空格为%20的可行方案
先说明你之前写的(?<=\]\()s\+失效原因
你写错了两个点:
- 匹配空格应该用
\s而不是s,错误的转义把空格匹配符变成了普通字母s - 这个写法只能匹配
](后面第一个位置的空格,URL中间的空格根本命中不到
方案1:单文件/已打开文件替换(支持可变长度后向断言)
直接用下面的正则配置查找替换,完全不会误匹配普通括号内的内容:
- 查找框输入:
(?<=\]\([^\)]*)\s - 替换框输入:
%20 - 记得勾选「使用正则表达式」选项
多次点击「全部替换」,直到没有新的匹配项为止,所有链接URL里的空格就全部替换完成了。
方案2:全局跨文件批量替换(不支持可变长度后向断言)
用两段式替换规避VSCode全局查找的语法限制,全程不会误改其他内容:
第一步:给URL内的空格加唯一临时标记
- 查找框输入:
(\]\([^\)\s]*)\s - 替换框输入:
$1☃️
这里的
☃️可以换成任意你确认不会出现在文档里的特殊字符,多次点击「全部替换」直到没有匹配项,所有URL里的空格都会被替换为这个临时标记。
第二步:批量替换临时标记为%20
- 查找框输入:
☃️ - 替换框输入:
%20
直接点击「全部替换」即可完成所有文件的批量处理。
零正则省力方案
直接安装VSCode的Markdown All in One插件,开启「格式化时自动修正URL」选项,保存文件时会自动把URL内的空格转成%20,不需要手动操作。
内容的提问来源于stack exchange,提问作者jt196
相关产品推荐
相关产品推荐

