我有22个文件file001 - file022,我想使用regex只查找抓取文件005-file022 022。
我知道00[5-9]抓005-009,0[12][0-9]抓010-022.
我很难把它们组合在一起。
发布于 2013-09-20 20:02:31
最易读的方法是(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)的非捕获组为首选。
发布于 2013-09-20 20:17:19
由于上下文到目前为止尚不清楚,合并两个正则表达式可能会损害可读性,因此我建议另一种选择:
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代码是不言而喻的。
https://stackoverflow.com/questions/18924883
复制相似问题