正则表达式匹配文件或文件夹路径

发布时间:2024年01月19日

正则表达式

^(?:(?:[a-zA-Z]:|\.{1,2})?[\\/](?:[^\\?/*|<>:"]+[\\/])*)(?:(?:[^\\?/*|<>:"]+?)(?:\.[^.\\?/*|<>:"]+)?)?$

结构如下

在这里插入图片描述
图片为菜鸟正则表达式可视化工具网页截图

可匹配的情况

  1. 正常Window带卷标的路径和类Unix不带卷标的路径,不区分正反斜线,如下所示

D:\Workspace\sample.txt
D:/Workspace/
D:\
/Workspace/sample.txt
/Workspace

注意无法匹配 D: 请使用 D:\

  1. 相对路径

.\Res\map\sample.bin
..\Res\map\

使用时注意事项

正则表达式本身在解析时会对反斜线做一次转义处理,这一次转义是独立于编程语言对反斜线的转义处理的,所以不能直接复制粘贴到代码里,需要做一些处理,简单理解就是正则表达式中每出现一个斜线,代码中就写两个,或者使用编程语言提供的原始字符串功能也可以。下面是一些使用案例:

// C++
// 额外转义
std::regex pattern("^(?:(?:[a-zA-Z]:|\\.{1,2})?[\\\\/](?:[^\\\\?/*|<>:\"]+[\\\\/])*)(?:(?:[^\\\\?/*|<>:\"]+?)(?:\\.[^.\\\\?/*|<>:\"]+)?)?$");
// 原始字符串
std::regex pattern(R"(^(?:(?:[a-zA-Z]:|\.{1,2})?[\\/](?:[^\\?/*|<>:"]+[\\/])*)(?:(?:[^\\?/*|<>:"]+?)(?:\.[^.\\?/*|<>:"]+)?)?$)");
# Python 原始字符串
pattern = r'^(?:(?:[a-zA-Z]:|\.{1,2})?[\\/](?:[^\\?/*|<>:"]+[\\/])*)(?:(?:[^\\?/*|<>:"]+?)(?:\.[^.\\?/*|<>:"]+)?)?$'
文章来源:https://blog.csdn.net/NEKOic/article/details/135700462
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。