通过正则表达式以前导零的数字查找文件

时间:2013-09-20 19:59:37

标签: regex

我有22个文件file001 - file022,我想用正则表达式找到只抓文件005-file022。

我知道00[5-9]抓取005-009而0[12][0-9]抓取010-022。

我遇到问题将它们组合成一个正则表达式。

2 个答案:

答案 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代码不言自明。