Hola a todos, 
 
tengo una duda y espero que me puedan ayudar o por lo menos decirme como salir del bache, tengo un texto metido en una variable mas o menos de este estilo: 
ADMINISTRACIÓN GENERAL: 
– MINISTERIO DE EMPLEO 
Servicio Público Estatal: 
Remisión de resolución de percepción indebida
   de la Activa de Inserción.......................        2
Remisión de resolución de percepción indebida
   del Sub ...........................        2
Remisión de resolución de percepción indebida
   del Sub...........................        3
Remisión de resolución de percepción indebida
   del Subsidio ...........................        3  
– MINISTERIO DE ALIMENTACIÓN
    Y MEDIO AMBIENTE
       Confederación Hidrográfica: 
           Iniciación derecho a un aprovechamiento de aguas.......        4  
ADMINISTRACIÓN PROVINCIAL: 
.......
.......
... 
--------+++++---------------+++++++++++---------------++++++++-------- 
bien lo que tengo que hacer es sacar los titulos los cuales son los que aparecen en mayuscula seguido de dos puntos, la unica idea que se me ocurre es utilizar la clase pattern y matcher para buscar mediante expresiones regulares de tal forma que busque las dos ultimas letras mayusculas seguido de dos puntos, hasta aqui no hay problema, la duda me surge de como poder hacer para que a medida que busque pueda ir almacenando los titulos, es decir, mientras no encuentre el patron que vaya guardando las palabras que estan antes de la expresion regular, lo hice de la siguiente manera pero solo me guarda las coincidencias con el patron, espero que me podais ayudar, o si sabeis una forma mejor de hacerlo o mas facil tambien me vendria bien saberlo    
Código Java:
Ver original-          
- Pattern p = Pattern.compile("[A-Z][A-Z]:"); 
- Matcher m = p.matcher(toString); 
-          
-         
-          
-         for (int i = 0; i < toString.length(); i++) { 
-          
-             sb.insert( sb.length() , toString.charAt(i) ); 
-              
-              if ( m.find() ) { 
-                   
-                  sb.insert(sb.length() , m.group()); 
-                   
-                  System- . out- . println(- sb. toString() );
 
-              }    
-         } 
yo creo el que problema lo tengo en el char.At(i) que solo me pasa un caracter  
espero que me podais ayudar 
gracias