我有一个java类和 我想读取名称以“home-search-log.log”开头的文件。所以我写了这段代码。
File dir = new File("D:\\");
File[] foundFiles = dir.listFiles(new FileFilter() {
public boolean accept(File file) {
return Pattern.compile("^(home-search-log.log)").matcher(file.getName()).matches();
}
});
for (File file : foundFiles) {
System.out.println(file.getName());
}
但它只返回一个具有确切名称的文件。我的另一个文件的名称是“home-search-log.log.2013-04-12”,但此模式不会返回。我哪里错了?
答案 0 :(得分:2)
我认为以下代码可能更好:
return file.getName().startsWith("home-search-log.log");
答案 1 :(得分:1)
尝试以下正则表达式。
System.out.println("home-search-log.log.2013-04-12".matches("^home-search-log.*"));
答案 2 :(得分:0)
尝试这样的事情:
"^(home-search-log\\.log.*)"
首先,您需要转义正则表达式中使用的特殊字符(“ - ”,“。”)并添加结尾以指定您要匹配任何内容“。*”所以在这种情况下它应匹配“home”中的任何内容-search-log.log“to”home-search-log.logsomething“
答案 3 :(得分:0)
使用如下;
"home-search-log.log((.\\d[4]-\\d[2]-\\d[2])?)"