CodeMonkey流水账:Java通配符转正则表达式

通配符转正则表达式

/**
* @param str - a WildCard String, as a file name or sth, format like "A*.*" to match.
* @return - a RegularExpression converted from that WildCard str, format like "^A.*\..*$";
*/
public static String WildCard2RegEx(String str) {
        String s = str;
        s = s.replace('.', '#');
        s = s.replaceAll("#", "\\\\.");
        s = s.replace('*', '#');
        s = s.replaceAll("#", ".*");
        s = s.replace('?', '#');
        s = s.replaceAll("#", ".?");
        s = "^" + s + "$";
        return s;
}

然后就可以用了。

PS:下面有个lambda表达式,与主题无关。
PS2:类似本地文件或者FTP的listFiles,真的应该支持通配符。

只支持正则表达式简直反人类。难道他们都不用ls *.*么。其次类似FTP的返回如果不在服务端过滤名称,有效率问题吧???

for(String inPath : inPathList){
        File inDir = new File(inPath);
        BaseList = inDir.listFiles(pathname -> {
                Pattern pattern = Pattern.compile(WCUtil.WildCard2RegEx("A*.dat"));
                return pattern.matcher(pathname.getName()).matches();
        });
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值