使用正则表达式匹配并修复MD文档中的引用路径错误问题
用正则表达式匹配并修复MD文档中的引用路径错误问题
最近在写文档时候经常需要跨平台阅读, Windows向下兼容Unix的路径分隔符写法, 但是反之不成立, 如果使用Win风味的路径分隔符不管是Github还是Hexo的文件引用都会失效, 因此需要检查本地文档的分隔符号使用情况
写法
要匹配 Windows 路径分隔符的路径(如..\Code\DataProcessing.ipynb或.\aaa.file), 我们可以使用以下正则表达式
1 | [.]{1,2}\\(?:[^\\]+\\)*[^\\]+\.[^\\]+ |
可以直接通过VS Code打开文档所在路径, 全局匹配并替换
解释
[.]{1,2}: 匹配一个或两个点 (.或..), 表示当前目录或上一级目录。\\: 匹配反斜杠 (\), 这是 Windows 中的路径分隔符。由于反斜杠在正则表达式中是转义字符, 因此需要双写为\\。(?:[^\\]+\\)*: 匹配零个或多个目录部分, 目录名由非反斜杠字符组成, 后面跟一个反斜杠。(?:...)是一个非捕获组,[^\\]+表示匹配任意非反斜杠的字符,*表示前面的组可以重复零次或多次。[^\\]+\.[^\\]+: 匹配文件名和扩展名, 文件名和扩展名都由非反斜杠字符组成, 使用\.匹配小数点。
示例
..\Code\DataProcessing.ipynb: 匹配.\aaa.file: 匹配C:\Users\example.txt: 不匹配(因不符合最前面的.或..)
这个正则表达式可以灵活匹配绝大多数相对路径中使用 Windows 分隔符的情况, 尤其是以 . 或 .. 开头的相对路径。