Ver Mensaje Individual
  #1 (permalink)  
Antiguo 16/09/2009, 10:10
mariano_donati
 
Fecha de Ingreso: marzo-2005
Mensajes: 1.418
Antigüedad: 19 años, 8 meses
Puntos: 9
Expresion regular para obtener líneas que comienzan con un determinado ID

Hola. Tengo que hacer un parser para procesar unos archivos de texto. La entrada va a venir con el siguiente formato:

20598.42 Concepto Detalle
20521.32 Concepto Detalle
10421.32 dato otrodato
...

Donde los dos primeros números de cada línea es el identificador y el resto son los datos.
Me gustaría saber una regular expresión que haga lo siguiente:

- Me encuentre todas las líneas que empiezan con 20
- De cada línea me devuelva solo los datos, sin el 20

He probado con algunas, pero no logro que me salga. La que más se acerco al resultado buscado fue ^(?:20)(.)* con el flag DOTALL (el punto machea los saltos de línea también). Pero si bien encuentra que hay coincidencia, me devuelve todo el string y solo quiero que me devuelva las líneas que coinciden.
El motor que estoy usando es el de java de la clase Pattern y lo hago de esta forma:

Matcher match = Pattern.compile("^(?:20)(.)*", Pattern.DOTALL).matcher("20504.291\r\n20509.21\r\n 10452\r\n");
if(match.matches())
{
System.out.println(match.group(0));
}

La salida es

20504.291
20509.21
10452

¿Alguna idea?

Muchas gracias por adelantado.
Saludos.
__________________
Add, never Remove