正则表达式匹配文件名

时间:2013-04-16 07:56:10

标签: java regex file

我有一个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”,但此模式不会返回。我哪里错了?

4 个答案:

答案 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])?)"