在java中搜索文件名的正则表达式

时间:2012-11-14 05:04:26

标签: java

我需要一个正则表达式来搜索格式为的文件名: abc_abc0003_2012-14-11_1212_regex.txt。在文件名中,abc_abc0003__regex.txt将保持不变,其余部分将是可变的。

我试过的正则表达式是:

"abc_abc0003_" + "(19|20)\\d\\d[- /.](0[1-9]|1[012])[- /.](0[1-9]|[12][0-9]|3[01])" + "[_0-9]*" + "_regex.txt"

这适用于Java中的matches()函数,但是当我使用它来搜索文件名时,它不起作用。有什么想法吗?

2 个答案:

答案 0 :(得分:1)

尝试使用_,数字和-的模式,以及不情愿的(+)量词:

Pattern p = Pattern.compile("abc_abc0003_[_\\d-]+?_regex.txt");
Matcher m = p.matcher(inputStr);
while(m.find()) {
    System.out.println(m.group());
}

答案 1 :(得分:1)

尝试使用以下正则表达式,以允许numbers_& -介于两端之间。

     ^(abc\\_abc0003\\_)[\\_\\-\\d]+(\\_regex\\.txt)$

e.g。

String regex12 = "^(abc\\_abc0003\\_)[\\_\\-\\d]+(\\_regex\\.txt)$";
Pattern pattern12 = Pattern.compile(regex12);
System.out.println(pattern12
                    .matcher("abc_abc0003_2012-14-11_1212_regex.txt")
                    .find());//prints true
System.out.println(pattern12
                    .matcher("abc_abc0003_2012-14-11_ab1212_regex.txt")
                    .find());//prints false