使用正则表达式匹配并修复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 分隔符的情况, 尤其是以 .
或 ..
开头的相对路径。