import java.util.Vector;

class Stack{
 private int cursor=0;
 private int[] stackBody=new int[99];
 
 Stack(){
  cursor=0;
  for(int i=0;i<99;i++)
   stackBody[i]=-1;
 }
 public int getValue(){
  return stackBody[cursor];
 }
 public void push(int value){
  cursor++;
  stackBody[cursor]=value;
 }
 public void pop(){
  stackBody[cursor]=-1;
  cursor--;
 
 }
}

public class Test {
 
   
 private int left[]=new int[99];
 private int right[]=new int[99];
 private int counter=0;
 private Vector subReg=new Vector();
 private int pos=0;
 private int sublastIndex=0;
 
   
    
    public void getSubreg(String str){
   Stack temp=new Stack();
   while(pos<str.length()){
    if(pos==0){
     if(str.charAt(pos)=='('){
      left[counter++]=pos;
      temp.push(pos);
     }
    }
    if((pos>0)&&(str.charAt(pos-1)!='//')){
     if(str.charAt(pos)=='('){
      left[counter++]=pos;
      temp.push(pos);
     }
     else if(str.charAt(pos)==')'){
      for(int i=0;i<99;i++){
       if(left[i]==temp.getValue()){
        right[i]=pos;
           break;
       }
      }
      temp.pop();
     }
    }
    pos++;
   }
 
   for(int i=0;i<counter;i++)
     subReg.addElement(str.substring(left[i]+1, right[i]));
   System.out.println("result:"+subReg);

    public static void main(String []args){
     Test test=new Test();
     test.getSubreg("(z)((a+)?(b+)?(c))*");
    
    }
}

显示顺序非运算顺序,是正则表达式子式的顺序o(∩_∩)o...