java - 如何验证文件路径?

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

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

最佳答案

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

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

要匹配第三组和第四组,您需要将第二组设置为可选。目前它与运算符+一起使用。请使用 * 代替。

因此,如果您将正则表达式替换为以下正则表达式:

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

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

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

关于java - 如何验证文件路径?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19964006/

相关文章:

java - 如何在 Java 中将 double 按点拆分为两个十进制数?

java - 使用对象列表构建树

mysql - 查找作为给定字符串的起始字符串的列值。

regex - VBA排除特殊字符和数字,但保留字符串中的空格

java - 多进程 Java 程序在其运行的 JVM 下的实际机器上下文中是单个进程吗?

java - 无法使用 Apache commons-net-3.1 在 FTP 上上传大文件

另一个类中的Java actionListener不会打开窗口

javascript - 正则表达式:读取数字后面的字符

使用 < 和 > 时的 JavaScript 正则表达式问题

C++ regex 将正则表达式转换为 C++ 代码