1

我有 22 个文件 file001-file022,我想使用正则表达式来查找仅获取 file005-file022。

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

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

4

2 回答 2

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)如果引擎支持它,假设您不需要单独捕获最后两位数字,则“either or” as 首选非捕获组。

于 2013-09-20T20:02:31.293 回答
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 代码是不言自明的。

于 2013-09-20T20:17:19.883 回答