我有 22 个文件 file001-file022,我想使用正则表达式来查找仅获取 file005-file022。
我知道00[5-9]
抓取 005-009 和0[12][0-9]
抓取 010-022。
我在将它们组合成一个正则表达式时遇到问题。
我有 22 个文件 file001-file022,我想使用正则表达式来查找仅获取 file005-file022。
我知道00[5-9]
抓取 005-009 和0[12][0-9]
抓取 010-022。
我在将它们组合成一个正则表达式时遇到问题。
最易读的方式是(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 首选非捕获组。
由于到目前为止上下文尚不清楚,并且组合两个正则表达式可能会损害可读性,我会提出一个替代方案:
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 代码是不言自明的。