为什么不使用glob:*匹配PathMatcher中的任何路径?

时间:2016-06-09 11:40:45

标签: java regex glob

我们有:

Path path = Paths.get("C:\\1.txt");

以下代码打印“true”:

PathMatcher matcher = FileSystems.getDefault().getPathMatcher("regex:.*");
System.out.println(matcher.matches(path));

但以下代码打印“false”:

PathMatcher matcher = FileSystems.getDefault().getPathMatcher("glob:*");
System.out.println(matcher.matches(path));

为什么呢?

我希望两种方法都有true

根据Glob page from Wikipedia,通配符*表示:

  

匹配任意数量的任何字符,包括无

详细信息:

  • Java 8
  • Windows 7

1 个答案:

答案 0 :(得分:1)

正如@ T.J Crowder所说,你应该好好接受这个:

PathMatcher matcher2 = FileSystems.getDefault().getPathMatcher("glob:**");
System.out.println(matcher2.matches(path));

有关详细信息,请参阅this,其中包含:

  

**字符匹配跨越目录的零个或多个字符   边界。