有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java使用正则表达式解析字符串

我在试着找出字符串/home/user/test.dat 我使用String[] split = file.split("(?!.*/)");,但是split[1]只返回第一个字符,而不是整个文件名。我该如何编辑我的正则表达式,使其返回超过最后一个正斜杠的所有内容


共 (2) 个答案

  1. # 1 楼答案

    除非有令人信服的理由使用正则表达式,否则我会使用简单的^{}。比如

    String file = "/a/b/c/d/e/test.dat";
    int afterSlash = file.lastIndexOf('/');
    if (afterSlash > -1) {
        file = file.substring(afterSlash + 1);
    }
    System.out.println(file);
    

    上述输出为(请求的)

    test.dat
    
  2. # 2 楼答案

    Regex

    \/((\w+)\.(\w+))$
    

    Regular expression visualization

    Debuggex Demo

    但是,由于您使用的是Java,因此只需将字符串加载到File helper中即可拉出文件名:

    Java

    Path p = Paths.get("C:\\Hello\\AnotherFolder\\The File Name.PDF");
    String file = p.getFileName().toString();