对于UNIX文件路径,最正确的正则表达式(regex)是什么?
例如,要检测类似以下内容:
/usr/lib/libgccpp.so.1.0.2创建一个与大多数文件匹配的正则表达式非常容易,但是最好的表达式是什么,包括可以检测转义空格序列和在UNIX上的文件路径中通常找不到的不常见字符的正则表达式。
另外,有几种不同编程语言的库函数提供文件路径正则表达式吗?
发布于 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也不允许作为文件名:
CON, PRN, AUX, NUL, COM1, COM2, COM3, COM4, COM5,
COM6, COM7, COM8, COM9, LPT1, LPT2, LPT3, LPT4,
LPT5, LPT6, LPT7, LPT8, LPT9发布于 2009-02-11 17:29:23
匹配所有UNIX路径的正确正则表达式是:^\0+
即,一个或多个不是NUL的字符。
发布于 2012-12-07 20:07:58
^(/)?([^/\0]+(/)?)+$这将接受文件系统中的所有合法路径,例如extX、reiserfs。
它只丢弃包含NUL或双(或更多)斜杠的路径名。根据Unix规范,其他任何东西都应该是合法的(我也对这个结果感到惊讶)。
https://stackoverflow.com/questions/537772
复制相似问题