java正则表达式匹配文件路径

Jij*_*joy 7 java regex

我正在尝试创建一个正则表达式来匹配java中的文件路径

C:\ ABC\DEF\GHI \的abc.txt

我试过这个([a-zA-Z]:)?(\\[a-zA-Z0-9_-]+)+\\?,就像下面的代码一样

import java.util.regex.Pattern;

  public class RETester {

public static void main(String arhs[]){

    String regularExpression = "([a-zA-Z]:)?(\\[a-zA-Z0-9_-]+)+\\?";

    String path = "D:\\directoryname\\testing\\abc.txt";

    Pattern pattern = Pattern.compile(regularExpression);

    boolean isMatched = Pattern.matches(regularExpression,path);
    System.out.println(path);
    System.out.println(pattern.pattern());
    System.out.println(isMatched);

}

}
Run Code Online (Sandbox Code Playgroud)

然而它总是给我,结果是假的.请帮助我 .

谢谢

fal*_*tro 17

Java也正在使用反斜杠转义,所以你需要两次转义反斜杠,一次是Java字符串,一次是regexp.

"([a-zA-Z]:)?(\\\\[a-zA-Z0-9_.-]+)+\\\\?"
Run Code Online (Sandbox Code Playgroud)

你的正则表达式匹配文字'[ - zA-Z0-9_-'字符串和文字'?' 在末尾.我还在那里添加了一段时间来允许'abc.txt'..

也就是说,考虑使用另一种机制来确定有效的文件名,因为有不同的方案(即unix).如果路径无效,java.util.File可能会抛出异常,这可能是一个很好的选择,虽然我不喜欢使用控制流的异常...

  • @TheLima你表面上是正确的,但你认为test.txt是一个文件是错误的.没有什么可以阻止你创建一个名为"test.txt"的目录和一个名为"hhh"的目录中的文件. (2认同)