Bueno, hice un ejemplito que cualquiera lo puede ejecutar para probar.
Espero con esto quede mas claro...
Código:
/**
* Example class
*/
package com.pp.lgs.action;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
/**
* @author rortiz
*
*/
public class RegularExpressionsExample {
/**
* @param args
*/
public static void main(String[] args) {
try {
/* se declara la variable que va contener todo el string a analizar */
StringBuffer inputStr = new StringBuffer();
/* Se le asigna la información */
inputStr.append("<tag1>\n");
inputStr.append("a\n");
inputStr.append("b\n");
inputStr.append("c\n");
inputStr.append("<cont>\n");
inputStr.append("bla bla\n");
inputStr.append("</cont>\n");
inputStr.append("<cont>\n");
inputStr.append("ye ye\n");
inputStr.append("</cont>\n");
inputStr.append("</tag1>");
/* se declara el patrón a buscar en el string */
String patternRegex = "(<tag1>([\\p{Lower}\\p{Upper}\\p{Digit}\\n\\r\\t\\s\\p{Punct}])<cont>)";
/* se compila el patrón */
Pattern pattern = Pattern.compile(patternRegex);
/* se inicializa el matcher */
Matcher matcher = pattern.matcher("");
/* se le asigna el string en donde va buscar el patrón definido previamente */
matcher.reset(inputStr.toString());
/* ejecuta la búsqueda */
boolean matchFound = matcher.find();
/* se evalúa si encontró algo */
if (matchFound){
System.out.println("Grupos encontrados: " + String.valueOf(matcher.groupCount()));
System.out.println(matcher.group(1)); /* se imprime lo que encontró (el grupo 1, aunque puede haber más) */
}
else {
System.out.println("No se encontró el patrón");
}
}
catch (Exception e){
System.out.println("Ha ocurrido un error al procesar la petición");
}
}
}