0

我需要一个正则表达式来搜索具有以下格式的文件名: 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(),但是当我使用它来搜索文件名时,它就不起作用了。任何想法?

4

2 回答 2

1

尝试如下正则表达式以允许numbers, _&-在两端之间。

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

例如

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
于 2012-11-14T05:20:20.437 回答
1

试试这个(带有_、 数字和的模式-),带有不情愿的 ( +) 量词:

Pattern p = Pattern.compile("abc_abc0003_[_\\d-]+?_regex.txt");
Matcher m = p.matcher(inputStr);
while(m.find()) {
    System.out.println(m.group());
}
于 2012-11-14T05:16:14.970 回答