Ciao,sto provando a sostituire ad una stringa del tipo:
(A(BC)(RS))
ogni parentesi con una chiave(stringa)diversa,finchè uso il metodo replace su una stringa in input che ha parentesi con lettere diverse, tutto va bene Se però l'input è questo
(A(A)(A)(A)) mi vengono sostituite tutte le parentesi con la stessa chiave come giusto che sia,ma questo non mi va bene,per rimediare a ciò ho pensato di sostituire replace con replaceFirst pensando di ottnere l'effetto desiderato ossia:
(A°1°(A)(A))
(A°1°°2°(A))
(A°1°°2°°3°)
°4°
ma ciò non accade chi mi sa dire come mai?se non è chiaro cerco di spiegarmi meglio


codice:
	       Scanner in_Str=new Scanner(System.in);		
		Pattern patternRiga     = Pattern.compile("([(]([A-Z0-9°]+)[)])");
		String Riga     ="",Riga2="";
		String blocco ="";
		String espr2="";
		int kB=1;
        StringTokenizer St ;
  
    do{     
	   System.out.println("****************************************IMMETTI RIGA******************************************************");
	    Riga=in_Str.nextLine();	

	     while(Riga.contains("(")){	
	      	 Matcher matcher = patternRiga.matcher(Riga);
	      	       while( matcher.find() ){//finche ci sono parentesi elementari 
	  			   	   	 blocco=matcher.group();  
	  			   	   	 String chiave= "°".concat(String.valueOf(kB)).concat("°");
	  			   	   	  //********* CALCOLO BLOCCO *********
	  	         //replace    	   
	  Riga2=Riga.replaceFirst(blocco,chiave);  //<---ERROREEEE!
         Riga=Riga2;  
	  					 System.out.println(Riga);  
	  					 kB++;
	  		      }		
	     }	
	     
    }while(true);