You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Java中基于正则表达式筛选指定目录下符合命名规则的子目录

解决方案

你可以通过自定义listFiles的目录过滤器实现筛选,有两种常用实现方式:

方式1:简单前缀匹配(满足当前需求,性能更高)

如果只需要筛选文件名以date=开头的目录,直接用字符串前缀判断即可,不需要正则:

import java.io.File;

public class DirFilter {
    public static void main(String[] args) {
        String dir = "/test_directory/data/";
        // 自定义过滤器:同时满足是目录 + 文件名前缀为date=
        File[] directories = new File(dir).listFiles(file -> 
            file.isDirectory() && file.getName().startsWith("date=")
        );
        
        // 加非空判断避免目录不存在/无权限时报空指针
        if (directories != null) {
            for (File directory : directories) {
                System.out.println(directory.getAbsolutePath());
            }
        }
    }
}

方式2:正则匹配(适合需要严格校验日期格式的场景)

如果需要确保date=后面跟着的是yyyy-MM-dd格式的合法日期,可以用正则规则校验:

import java.io.File;
import java.util.regex.Pattern;

public class DirFilter {
    // 正则规则:date=开头,后面跟4位年-2位月-2位日格式
    private static final Pattern DATE_DIR_PATTERN = Pattern.compile("^date=\\d{4}-\\d{2}-\\d{2}$");
    
    public static void main(String[] args) {
        String dir = "/test_directory/data/";
        File[] directories = new File(dir).listFiles(file -> 
            file.isDirectory() && DATE_DIR_PATTERN.matcher(file.getName()).matches()
        );
        
        if (directories != null) {
            for (File directory : directories) {
                System.out.println(directory.getAbsolutePath());
            }
        }
    }
}

两种方式输出的结果都符合你预期的筛选要求。

内容的提问来源于stack exchange,提问作者chin99

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.06 05:00:04