我正在使用下面的正则表达式:
Pattern p = Pattern.compile("(.*?)(\\d+)?(\\..*)?");
while(new File(fileName).exists())
{
Matcher m = p.matcher(fileName);
if(m.matches()) { //group 1 is the prefix, group 2 is the number, group 3 is the suffix
fileName = m.group(1) + (m.group(2) == null ? "_copy" + 1 : (Integer.parseInt(m.group(2)) + 1)) + (m.group(3)==null ? "" : m.group(3));
}
}
这适用于filename
likeabc.txt
但如果有任何文件名称abc1.txt
为上述方法abc2.txt
。如何使正则表达式条件或更改(m.group(2) == null ? "_copy" + 1 : (Integer.parseInt(m.group(2)) + 1))
,以便它返回我abc1_copy1.txt
作为新的文件名,而不是abc2.txt
等等等等abc1_copy2
。