一个字符串:str = "(1) P ((2)@!)";
期望分割成一个数组array
arr[0] = (1)
arr[1] = P
arr[2] = (2)
arr[3] = @!请问应该如何处理?
补充 (1)是一个整体,里面可以是(3)甚至(50)等等在线等 谢谢
 正则表达式

解决方案 »

  1.   

    用匹配的方式试试
    public static void main(String[] args) {
    String str = "(1)  P ((2)@!)";
    Pattern p = Pattern.compile("(\\(\\d+\\))\\s*(\\w+)\\s*\\((\\(\\d+\\))(.+)\\)");
    Matcher m = p.matcher(str);
    String[] arr = null;
    if(m.find()) {
     arr = new String[]{m.group(1),m.group(2),m.group(3),m.group(4) };
    }
    for(String s : arr) {
    System.out.println(s);
    }
    }
      

  2.   

    Pattern.compile("(\\(\\d+\\))\\s*(\\w+)\\s*\\((\\(\\d+\\))(.+)\\)");上面的就可以 括号分组,一个个匹配。