我有22个文件file001 - file022,我想用正则表达式找到只抓文件005-file022。
我知道00[5-9]
抓取005-009而0[12][0-9]
抓取010-022。
我遇到问题将它们组合成一个正则表达式。
答案 0 :(得分:1)
最易读的方式是(00[5-9]|0[12][0-9])
,但更紧凑的方式是0(0[5-9]|[12][0-9])
。或者,根据您的正则表达式引擎0(0[5-9]|[12]\d)
。
如果引擎支持它,则假设您不需要单独捕获最后两位数字,则首选“或”为0(?:0[5-9]|[12]\d)
的非捕获组。
答案 1 :(得分:0)
由于目前尚不清楚上下文,并且结合两个正则表达式可能会影响可读性,我建议另类:
List<String> filenames = new ArrayList<String>();
String filename = "file007";
int fileIndex = Integer.parseInt(filename.substring(5, 7));
if (fileIndex > 4 && fileIndex < 23) {
filenames.add(filename);
}
希望Java代码不言自明。