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

vix*_*ant 0 java regex arrays string exception

我正以自己的方式解决这个问题.我正在尝试将文件路径拆分为驱动器,文件夹和文件名,全部放入数组中.

完整的课程.(Github上)

问题:

String regex = "\\";
String [] divisions = path.split (regex);
Run Code Online (Sandbox Code Playgroud)

这给了我一个java.util.regex.PatternSyntaxException.我抬头看了维基,发现了[\b]

String regex = "[\b]";
String [] divisions = path.split (regex);
Run Code Online (Sandbox Code Playgroud)

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

输入:

? Enter path -- 
C:\User\Admin\NekedGaben.jpg
Run Code Online (Sandbox Code Playgroud)

输出:

? Path = C:\User\Admin\NekedGaben.jpg
? File name = C:\User\Admin\NekedGaben
? Extension = .jpg
Run Code Online (Sandbox Code Playgroud)

我的问题:

  1. 为什么"\\"抛出异常,而"[\b]"不是?
  2. 为什么不split()拆分Path字符串?

anu*_*ava 5

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

String regex = "\\\\";
Run Code Online (Sandbox Code Playgroud)

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

String regex = Pattern.quote("\\");
Run Code Online (Sandbox Code Playgroud)