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
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
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...