Foros del Web » Programación para mayores de 30 ;) » Java »

problema con matcher

Estas en el tema de problema con matcher en el foro de Java en Foros del Web. Hola, tengo un problema a la hora de matchear una condicion en una instruccion if es la siguiente, texto un texto que recorro linea a ...
  #1 (permalink)  
Antiguo 05/07/2013, 06:13
 
Fecha de Ingreso: marzo-2011
Mensajes: 226
Antigüedad: 13 años, 1 mes
Puntos: 1
problema con matcher

Hola,

tengo un problema a la hora de matchear una condicion en una instruccion if

es la siguiente, texto un texto que recorro linea a linea,

lo que quiero guardar empieza en una linea por 4 digitos numericos y lluego texto que acaba en la palabra ("Página"). lo que hago es que si la linea empieza con 4 digitos y contiene Página copie esa linea.

si la linea empieza por digitos numericos y la siguiente linea contiene Página

copie dicha linea y la siguiente, y ahora viene mi duda.

lo hago tal que asi

Código Java:
Ver original
  1. if ( match.find() && linea.contains( "Página" ) )
  2.                     {
  3.                         entrada = linea;
  4.                         //System.out.println( "ENTRADA1: " + entrada );
  5.                     }
  6. if ( match.find() && siguienteLinea.contains( "Página" ) )
  7.                         {
  8.                             entrada = linea + "\n" + siguienteLinea;
  9.                             //System.out.println( "ENTRADA22: " + entrada );
  10.                             i++;
  11.                            
  12.                         }


para el primer caso funciona a la perfeccion, pero en el segundo caso no funciona bien, y el fallo esta en match.find

por si es de interes, la declaracion de match lo tengao asi


Código Java:
Ver original
  1. Pattern patron = Pattern.compile("^[0-9][0-9][0-9][0-9]");
  2. Matcher match = patron.matcher(linea);


alguien puede decirme que es lo que falla?

segun lei en la apli de java, find() devuelve true si encontro el patron en la cadena que se le pasa, y en mi caso esta devolviendo false en el segundo if

gracias
  #2 (permalink)  
Antiguo 05/07/2013, 06:29
Avatar de Xerelo  
Fecha de Ingreso: mayo-2009
Mensajes: 2.175
Antigüedad: 14 años, 11 meses
Puntos: 306
Respuesta: problema con matcher

La respuesta, en la API

http://docs.oracle.com/javase/6/docs...her.html#find()

Cita:
This method starts at the beginning of this matcher's region, or, if a previous invocation of the method was successful and the matcher has not since been reset, at the first character not matched by the previous match.
Cada vez que haces un find, continúa a partir de ese punto.

Tienes dos opciones, o guardar el valor del primer find, o hacer un if del find y dentro de él las otras dos condiciones.
__________________
Cada vez que solucionas los problemas de alguien que no se esfuerza, piensa en que el día de mañana puede llegar a ser tu compañero de trabajo, o peor, tu jefe.

Etiquetas: Ninguno
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 14:36.