你的想法不是太好,按照你的想法改成下面这样就可以了
[\\\\]+\\代表\ 
在字符串中\是转义符号
在正则中\也是转义符号
明白了吧?
你的("[\\]+");
相当于把]给转义了,这样第一个[就没有结束符]了
报错信息已经说的很明白了要分析错误信息.
Exception in thread "main" java.util.regex.PatternSyntaxException: Unclosed character class near index 3
[\]+
   ^ public static void main(String[] args) {
String lastfilename;
int lastnum;
String lastbyte;
Pattern pattern = Pattern.compile("[\\\\]+"); // 怀疑有毛病的的地方
String[] strs = pattern.split("D:\\1.java");
lastnum = strs.length;
--lastnum;
lastbyte = strs[lastnum];
System.out.println(lastbyte);
lastfilename = lastbyte;
}

解决方案 »

  1.   


    public static String getLastFilePath(String path)
    {
    String[] test = path.split("\\\\");
    for(int i=0; i<test.length; i++)
    {
    System.out.println(test[i]);
    }
    return test[test.length-1];
    }
    测试数据:c:\\hello\\major\\test.java
      

  2.   

    如果你不是想学习正则表达式才写的这个例子,我建议你是用java.io.File类来取这个the last nameFile f = new File(pathname)
    System.out.println(f.getName());