我有一个属性文件
{Content}
com.some.that.file.txt = com.some.dest
com.fold.cust.dir = com.some.dest
其中key表示要复制到{Value} = com.some.dest的目录的名称
我用"/"替换了点,但是这个我不能保留文件名,例如file.txt变成文件/ txt.
使用String.replaceAll(regex, replacement)正确的正则表达式:
String filename = value.replaceAll("\\.(?=.*\\.)", "/");
这个正则表达式匹配点,但只有在匹配点之后的某个地方有另一个点时,使用具有语法的"向前看"进行检查(?=regex).
这是一个测试:
public static void main(String[] args) {
    String value = "com.some.that.file.txt";
    String filename = value.replaceAll("\\.(?=.*\\.)", "/");
    System.out.println(filename);
}
输出:
com/some/that/file.txt
要查找目录名称,请使用以下命令:
String dirname = filename.replaceAll("/(?!.*/).*", "");
或者在一行中:
String dirname = value.replaceAll("\\.(?=.*\\.)", "/").replaceAll("/(?!.*/).*", "");
这个额外的步骤使用"负提前看",里面有语法(?!regex),只有在那里匹配斜线不匹配斜线后斜线的地方,然后用正则表达式后匹配一切.*
| 归档时间: | 
 | 
| 查看次数: | 1040 次 | 
| 最近记录: |