我们的系统允许文件夹和文件都可以是正则表达式格式。例如
/dir1*/abcd/efg.? is legal.
/dir* could match /dira and also /dirb/cde
我想找到所有匹配这个模式的文件。为了消除不必要的操作,我想获取根目录来启动文件列表和过滤。
是否有任何有效的方法来获取正则表达式路径模式的根目录?
几个测试用例:
/abc/def*/bc return /abc
/abc/def* return /abc
/ab.c/def* return /
/ab\.c/def* return /ab.c
最佳答案
已编辑:添加了相对路径的处理
String path;
String root = path.replaceAll( "((?<=/)|((?<=^)(?=\\w)))(?!(\\w|\\\\\\.)+/.*).*", "" ) );
这是一个测试:
public static void main( String[] args ) throws IOException {
String[] paths = {"/abc/def*/bc", "/abc/def*", "/ab.c/def*", "/ab\\.c/def*", "abc*", "abc/bc"};
for ( String path : paths ) {
System.out.println( path + " --> " + path.replaceAll( "((?<=/)|((?<=^)(?=\\w)))(?!(\\w|\\\\\\.)+/.*).*", "" ) );
}
}
输出:
/abc/def*/bc --> /abc/
/abc/def* --> /abc/
/ab.c/def* --> /
/ab\.c/def* --> /ab\.c/
abc* -->
abc/bc --> abc/
您可以从那里对其进行微调。
关于java - 当路径和文件名都包含通配符时列出与正则表达式匹配的文件路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11555291/