首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >对于UNIX文件路径,最正确的正则表达式是什么?

对于UNIX文件路径,最正确的正则表达式是什么?
EN

Stack Overflow用户
提问于 2009-02-11 16:57:54
回答 5查看 65K关注 0票数 19

对于UNIX文件路径,最正确的正则表达式(regex)是什么?

例如,要检测类似以下内容:

代码语言:javascript
复制
/usr/lib/libgccpp.so.1.0.2

创建一个与大多数文件匹配的正则表达式非常容易,但是最好的表达式是什么,包括可以检测转义空格序列和在UNIX上的文件路径中通常找不到的不常见字符的正则表达式。

另外,有几种不同编程语言的库函数提供文件路径正则表达式吗?

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2009-02-11 17:13:05

如果您不介意标识路径时出现误报,那么您只需要确保路径不包含NUL字符;其他所有内容都是允许的(特别是,/是名称分隔符)。更好的方法是使用适当的文件IO函数(例如File.exists()File.getCanonicalFile() )解析给定的路径。

长篇答案:

这既依赖于,也依赖于。例如,Wikipedia comparison of file systems指出,除了文件系统施加的限制之外,

MS-DOS、Microsoft Windows和OS/2不允许在所有文件系统的文件和目录名称中使用\ / : ? * " > < |NUL字符。Linux和Linux不允许在所有文件系统的文件和目录名称中使用/NUL字符。

在Windows中,下列reserved device names也不允许作为文件名:

代码语言:javascript
复制
CON, PRN, AUX, NUL, COM1, COM2, COM3, COM4, COM5,
COM6, COM7, COM8, COM9, LPT1, LPT2, LPT3, LPT4, 
LPT5, LPT6, LPT7, LPT8, LPT9
票数 13
EN

Stack Overflow用户

发布于 2009-02-11 17:29:23

匹配所有UNIX路径的正确正则表达式是:^\0+

即,一个或多个不是NUL的字符。

票数 12
EN

Stack Overflow用户

发布于 2012-12-07 20:07:58

代码语言:javascript
复制
^(/)?([^/\0]+(/)?)+$

这将接受文件系统中的所有合法路径,例如extX、reiserfs。

它只丢弃包含NUL或双(或更多)斜杠的路径名。根据Unix规范,其他任何东西都应该是合法的(我也对这个结果感到惊讶)。

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/537772

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档