如何验证文件路径?

时间:2013-11-13 20:47:34

标签: java regex

编辑1

我遇到了一个小问题而我常常求助的那个人,不管你信不信,在他的蜜月期间在澳大利亚,这是多么微不足道。

问题是我一直试图获得一个boolean,它会让我知道文件路径是否正确。

问题是它总是返回false,

我尝试过以下示例数据

    c:\Lingerie\
    c:\\Lingerie\\
    c:\\
    c:\

修改

这是我到目前为止开发的输入屏幕。我已经想过要有额外的空格,所以我已经弹出了修剪命令。

enter image description here 他们都归虚了。 这是我正在使用的方法和调用它的代码。

    dbFilePath = (text.getText()).trim();
    bool03 = busLog.isFilePath(dbFilePath);
    System.out.println("The result is " + bool03);

该方法被称为

public boolean isFilePath(String filePath) {

    return discreetLog.isFilePathMatched(filePath);
}

哪个电话

public boolean isFilePathMatched(String myFilePath){

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

    Pattern pattern = Pattern.compile(regularExpression);

    return Pattern.matches(regularExpression, myFilePath);
}

我不知道这是我的代码还是输入错误。

1 个答案:

答案 0 :(得分:3)

示例的第一个路径实际上是正确匹配正则表达式。

要匹配第二个和第四个,您必须允许双反斜杠。只需在正则表达式中前一个反斜杠的右侧添加\\\\?

要匹配第三个和第四个,您需要使第二个组可选。目前,它与运营商+一起使用。请改用*

因此,如果你用这个替换你的正则表达式:

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

它将匹配您的所有路径,仅此而已。

如果仍然无法匹配您的示例数据,则代码中的其他位置存在问题。您可以尝试发布SSCCE