在线工具 在线编程 在线白板 在线工具 在线编程 在线白板

使用java正则表达式提取文件名问题,怎么解决

高分请说下,使用java正则表达式提取文件名问题,怎么解决
最新回答
心事过重

2025-03-01 02:37:13

用 fname举个例子
 String fName =" G:\\Java_Source\\navigation_tigra_menu\\demo1\\img\\lev1_arrow.gif ";  
 
 fName = fName.trim();  
  
     String temp[] = fName.split("\\\\"); /**split里面必须是正则表达式,"\\"的作用是对字符串转义*/  

     //temp[] = [G:, Java_Source, navigation_tigra_menu, demo1, img, lev1_arrow.gif]  
     System.out.println("temp[] = " + Arrays.toString(temp));  
     fName = temp[temp.length-1];  
       
     System.out.println("方法三:fileName = " + fName);
賲呗^ō^钸哭

2025-03-01 03:48:09

方法如下,亲测有效。

import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class Test {

    // 匹配文件名的正则表达式
    private static final String REGEX = "([^<>/\\\\|:\"\"\\*\\?]+)\\.\\w+$+";
    private static final Pattern FILE_NAME_PATTERN = Pattern.compile(REGEX);

    public static String getFileName(String path) {
        Matcher matcher = FILE_NAME_PATTERN.matcher(path);
        // 使用while循环是因为一般匹配时存在多个匹配项,此例中只会匹配一个,也可直接用if判断
        while (matcher.find()) {
            String group = matcher.group();
            return group;
        }
        // 未匹配到
        return null;
    }

    public static void main(String[] args) {
        System.out.println(getFileName("D:/test/test.txt"));
        System.out.println(getFileName("D:/test/test.doc"));
        System.out.println(getFileName("D:/test/abc/test2.xls"));
    }
}