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

cual es el problema? (expresiones regulares)

Estas en el tema de cual es el problema? (expresiones regulares) en el foro de Java en Foros del Web. estoy viendo expresiones regulares y escribi este codigo: @import url("http://static.forosdelweb.com/clientscript/vbulletin_css/geshi.css"); Código Java: Ver original public static void main ( String [ ] args ) throws ...
  #1 (permalink)  
Antiguo 01/10/2013, 20:38
Avatar de iivo94  
Fecha de Ingreso: febrero-2011
Ubicación: Argentina
Mensajes: 281
Antigüedad: 13 años, 2 meses
Puntos: 3
Pregunta cual es el problema? (expresiones regulares)

estoy viendo expresiones regulares y escribi este codigo:

Código Java:
Ver original
  1. public static void main(String[] args) throws Exception {
  2.         System.err.println("Se van a detectar los patrones <Puerto> y <Puerta>");
  3.         Scanner teclado = new Scanner(System.in);
  4.         cadena=teclado.nextLine();
  5.         Pattern patron = Pattern.compile(".*[Pp]uert[a|o].*");
  6.         Matcher m  = patron.matcher(cadena);
  7.         if(m.find()){
  8.             patron=patron.compile(".*[p|P]uerto.*");
  9.             m=patron.matcher(cadena);
  10.             if(m.find()){
  11.                 patron=patron.compile(".*[p|P]uerta.*");
  12.                 m =patron.matcher(cadena);
  13.                 System.out.println(m.find());
  14.             if(m.find()){
  15.                 System.out.print("<Puerto> y <Puerta>\n");}
  16.             else{System.err.print("<Puerto>\n");}
  17.             }
  18.            
  19.             else{System.err.print(" <Puerta>\n");}
  20.         }
  21.        
  22. }

el problema es que si recibe una cadena q tenga ambas palabras (puerto y puerta) NO me muestra el print de <puerto> y <puerta> sino el de la primera palabra que tenga la cadena... puerto o puerta, nuncam e muestra el otro y no entiendo cual es el problema :S

encima puse que me muestre si encuentra true o false cuando prueba con Puerta, me muestra true pero el if no se ejecuta(el de <puerto> y <puerta>)

edito:
lo cambie por esto y funciona
Código Java:
Ver original
  1. public static void main(String[] args) throws Exception {
  2.         System.err.println("Se van a detectar los patrones <Puerto> y <Puerta>");
  3.         Scanner teclado = new Scanner(System.in);
  4.         cadena=teclado.nextLine();
  5.         Pattern patron = Pattern.compile(".*[Pp]uert[a|o].*");
  6.         Matcher m  = patron.matcher(cadena);
  7.         if(m.find()){
  8.             patron=Pattern.compile(".*[p|P]uerto.*");
  9.             m=patron.matcher(cadena);
  10.             if(m.find()&&Pattern.compile(".*[pP]uerta.*").matcher(cadena).find()){
  11.                 System.out.println("peurto y puerta");
  12.             }
  13.            
  14.             else if(Pattern.compile(".*[pP]uerto").matcher(cadena).find()){System.out.print(" <Puerto>\n");}
  15.             else{System.out.println("Puerta");}
  16.         }
  17.        
  18. }

pero no deberia funcionar de la otra forma tambien?

Última edición por iivo94; 02/10/2013 a las 13:57

Etiquetas: expresiones
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 05:47.