我需要一个正则表达式来搜索格式为的文件名:
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()
函数,但是当我使用它来搜索文件名时,它不起作用。有什么想法吗?
答案 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