ecplise中split();的分割问题

    String str4 = "@a@b@c@d@e f  ";
    String str5 = "@a|b c*^e f  ";
    String[] str44 = str4.split("\\@");
    System.out.println(Arrays.toString(str44));
    String[] str55 = str5.split("[@^* |]");
    System.out.println(Arrays.toString(str55));

str55的分割字符的依据是什么?使用\无法分割str5 ,但是[]这个却可以

[@^* |]正则的意思是:用@或者^或者*或者 (空格)或者|分隔