我正在尝试创建一个正则表达式来匹配 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);
}
}
但是它总是给我,结果是假的。
原文由 Jijoy 发布,翻译遵循 CC BY-SA 4.0 许可协议
Java 也在使用反斜杠转义,您知道,因此您需要对反斜杠进行两次转义,一次用于 Java 字符串,一次用于正则表达式。
您的正则表达式匹配一个文字 ‘[-zA-Z0-9_-’ 字符串和一个文字 ‘?‘在最后。我还在其中添加了一个句点以允许“abc.txt”..
也就是说,考虑使用另一种机制来确定有效的文件名,因为存在不同的方案(即 unix)。如果路径无效,java.util.File 可能会抛出异常,这可能是一个不错的选择,尽管我不喜欢使用异常来控制流…