Java正则表达式需求:仅匹配目录路径而非文件路径
匹配Windows目录路径的正则表达式(排除文件路径)
需求明确
需要正则仅匹配Windows目录路径,排除包含文件名(带扩展名)的路径:
- 匹配目标:
C:\directory、C:\directory\another、D:\directory\、D:\ - 排除目标:
C:\directory\file.txt、D:\another.pdf
正则表达式
^[A-Za-z]:\\(?:[^\\/:*?"<>|\r\n]+\\)*[^\\/:*?"<>|\r\n]*\\?$
规则拆解
^[A-Za-z]:\\:匹配Windows路径的起始盘符(如C:\、D:\),确保是绝对路径格式(?:[^\\/:*?"<>|\r\n]+\\)*:匹配零或多级子目录,目录名排除Windows文件系统的非法字符,每级目录末尾带反斜杠[^\\/:*?"<>|\r\n]*:匹配最后一级目录名(允许为空,对应D:\这类根目录场景)\\?$:允许路径末尾带一个可选的反斜杠,且字符串到此结束——这是关键,确保路径末尾没有文件名(文件名通常带扩展名,且不会以反斜杠结尾)
验证结果
- ✅ 匹配成功:
C:\directory、C:\directory\another、D:\directory\、D:\ - ❌ 匹配失败:
C:\directory\file.txt、D:\another.pdf
补充说明
如果需要支持相对目录路径(如.\subdir、..\parent),可以调整正则开头部分为^(?:[A-Za-z]:\\|\.\\|\.\.\\)?,但根据控制台输入场景,绝对路径的正则已经满足需求。
内容的提问来源于stack exchange,提问作者PrettyCoder
相关产品推荐
相关产品推荐

