0

编辑 1

我被一个小问题困住了,我通常求助的那个人,不管你信不信,在澳大利亚度蜜月,那是多么的不体贴。

问题是我一直在努力尝试获得一个boolean让我知道文件路径是否正确的文件。

问题是它总是返回假,

我尝试了以下示例数据

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

编辑

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

在此处输入图像描述 他们都返回了假。这是我正在使用的方法和调用它的代码。

    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);
}

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

4

1 回答 1

3

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

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

要匹配第三和第四组,您需要将第二组设为可选。目前它与 operator 一起使用+。改为使用*

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

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

它会匹配你所有的路径,仅此而已。

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

于 2013-11-13T21:02:51.833 回答