java.util.regex.PatternSyntaxException - 使用split时(" \\");

时间:2015-02-02 17:19:13

标签: java arrays regex string exception

我以自己的方式解决this problem。我正在尝试将文件路径拆分为驱动器,文件夹和文件名,全部分成一个数组。

Complete class. (Github)

问题:

String regex = "\\";
String [] divisions = path.split (regex);

这给了我一个java.util.regex.PatternSyntaxException。我查了wiki并找到了[\b]

String regex = "[\b]";
String [] divisions = path.split (regex);

这不起作用。它不会抛出异常,也不会基于退格分割我的文件路径。

输入:

► Enter path -- 
C:\User\Admin\NekedGaben.jpg

输出:

→ Path = C:\User\Admin\NekedGaben.jpg
→ File name = C:\User\Admin\NekedGaben
→ Extension = .jpg

我的问题:

  1. 为什么"\\"会抛出异常,而"[\b]"却没有?
  2. 为什么split()没有拆分路径字符串?

2 个答案:

答案 0 :(得分:5)

你应该在Java正则表达式中使用双重转义,即:

String regex = "\\\\";

或使用静态Pattern.quote(String)方法:

String regex = Pattern.quote("\\");

答案 1 :(得分:2)

因为\b是单个字符,编译器知道它,他们就是朋友。

但是反斜杠(\)在Java中由\\表示,而\无效正则表达式,为了逃避它,您应该使用:

\\\\
↓ ↓
escaping

解决方案: