1
让我们:为什么glob:*匹配PathMatcher中的任何路径?
Path path = Paths.get("C:\\1.txt");
下面的代码打印 “真”:
PathMatcher matcher = FileSystems.getDefault().getPathMatcher("regex:.*");
System.out.println(matcher.matches(path));
,但下面的代码打印出 “假”:
PathMatcher matcher = FileSystems.getDefault().getPathMatcher("glob:*");
System.out.println(matcher.matches(path));
为什么?
我期待在两种方法中都有true
。
据Glob page from Wikipedia,通配符*
表示:
任意数目的字符,包括无
详细匹配:
- 的Java 8
- 的Windows 7
与其查阅维基百科关于glob的含义,我强烈建议[查看'getPathMatcher']的文档(https://docs.oracle.com/javase/7/docs/api/爪哇/ NIO /文件/ FileSystem.html#getPathMatcher(java.lang.String中))。但是它也有类似的说法:*“\ *字符与名称组件的零个或多个字符匹配,不会跨越目录边界。”*另请注意:*“\ * \ *字符匹配零个或多个跨越目录边界的字符。”*也许你想'**'(不知道,从来没有使用'PathMatcher')。 –
此外,您从Wikipage链接:COMMAND.COM和cmd.exe具有大多数常见语法有一些限制:没有[...]和*可能只出现在模式的结尾,而不是# –
@JorgeCampos:我的Windows 8系统上的'cmd.exe'在模式开始处用'*'表示很好。 –