我尝试用以下名称搜索文件:ENV20120517你所做的每一件事都是完成的.DAT
所以我将模式设置为:“ENV20120517 *。* DAT”。
public boolean accept(File dir, String name) {
if (pattern != null) {
return name.matches(pattern);
}
return false;
}
为什么使用上一个模式,我认为:name =“ENV20120516053518.DAT”?
答案 0 :(得分:4)
String.matches()
需要regular expression,而不是glob pattern。
恰好ENV20120517*.*DAT
是有效的正则表达式。但是,它与您期望的内容有不同的含义:它匹配以ENV2012051
开头并以DAT
结尾的任何字符串(.*
匹配任何内容,而7*
匹配任何内容1}}实际上是无操作。
以下正则表达式等同于问题ENV20120517.*[.].*DAT
有关如何在Java中进行全局匹配的一些想法,请参阅Is there an equivalent of java.util.regex for "glob" type patterns?
答案 1 :(得分:0)
模式应为"ENV20120517.*DAT"
,因为"ENV20120517*.*DAT"
,第一个*
匹配0个或更多7个字符,因此"ENV20120516053518.DAT".matches("ENV20120517*.*DAT")
为真。
答案 2 :(得分:0)
尝试
pattern = "ENV20120517.*\\.DAT"
或者更严格:
pattern = "^ENV20120517.*\\.DAT$"