编辑1
我遇到了一个小问题而我常常求助的那个人,不管你信不信,在他的蜜月期间在澳大利亚,这是多么微不足道。
问题是我一直试图获得一个boolean
,它会让我知道文件路径是否正确。
问题是它总是返回false,
我尝试过以下示例数据
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);
}
我不知道这是我的代码还是输入错误。
答案 0 :(得分:3)
示例的第一个路径实际上是正确匹配正则表达式。
要匹配第二个和第四个,您必须允许双反斜杠。只需在正则表达式中前一个反斜杠的右侧添加\\\\?
。
要匹配第三个和第四个,您需要使第二个组可选。目前,它与运营商+
一起使用。请改用*
。
因此,如果你用这个替换你的正则表达式:
String regularExpression = "([a-zA-Z]:)?(\\\\\\\\?[a-zA-Z0-9_.-]+)*\\\\?\\\\?";
它将匹配您的所有路径,仅此而已。
如果仍然无法匹配您的示例数据,则代码中的其他位置存在问题。您可以尝试发布SSCCE。