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

Expresiones regulares

Estas en el tema de Expresiones regulares en el foro de Java en Foros del Web. Hola, nuevamente por aca; pasa que tengo una duda muy enorme y no logro solucionar, se trata sobre expresiones regulares. Lo que quiero hacer en ...
  #1 (permalink)  
Antiguo 12/10/2011, 01:43
 
Fecha de Ingreso: septiembre-2010
Mensajes: 48
Antigüedad: 13 años, 7 meses
Puntos: 3
Pregunta Expresiones regulares

Hola, nuevamente por aca; pasa que tengo una duda muy enorme y no logro solucionar, se trata sobre expresiones regulares.

Lo que quiero hacer en PHP seria:

Código PHP:
Ver original
  1. <?php
  2. $return = 'Hola kh0d3x como estas?';
  3. preg_match("/Hola (.*) como estas?/", $return, $flag);
  4. echo $flag[1];
  5. //kh0d3x
  6. ?>

Quiero hacer lo mismo con Java pero no logro como simular cada patron, he intentado de mil maneras pero no logro; cabe mencionar que estoy obteniendo el contenido completo de una pagina y cuando hice un System.out.println(contenido) me tiro un mensaje que es muy largo:

Cita:
line is too long, please switch to
pero supongo que eso es porque no se puede mostrar en el mismo "IDE", el problema reside como dije anteriormente que no se como pasar esa expresion regular a Java teniendo en cuenta que el contenido es muy largo (supongo que no importa).

Espero me solucionen porque tengo horas rompiendome la cabeza.

Saludos y gracias de antemano.

Última edición por kh0d3x; 12/10/2011 a las 02:54
  #2 (permalink)  
Antiguo 12/10/2011, 03:06
 
Fecha de Ingreso: septiembre-2010
Mensajes: 48
Antigüedad: 13 años, 7 meses
Puntos: 3
Respuesta: Expresiones regulares

Espero puedan ayudarme, ya tengo lo básico como:

Código Javascript:
Ver original
  1. Pattern a = Pattern.compile("Hola (.*) como estas?");
  2. Matcher b = a.matcher(contenido);
  3. System.out.println(a.matches());
  4. System.out.println(a.groups());
  5. //Etc

Espero me ayuden nuevamente, saludos y perdon por el doble post.
  #3 (permalink)  
Antiguo 12/10/2011, 05:45
Avatar de chuidiang
Colaborador
 
Fecha de Ingreso: octubre-2004
Mensajes: 3.774
Antigüedad: 19 años, 6 meses
Puntos: 454
Respuesta: Expresiones regulares

Hola:

Aquí tienes cómo se extraen cachos de la cadena en java, mira a ver si te vale http://chuwiki.chuidiang.org/index.p...ulares_en_Java

Se bueno.
__________________
Apuntes Java
Wiki de Programación
  #4 (permalink)  
Antiguo 12/10/2011, 08:27
Avatar de DeeR  
Fecha de Ingreso: diciembre-2003
Ubicación: Santiago
Mensajes: 520
Antigüedad: 20 años, 4 meses
Puntos: 17
Respuesta: Expresiones regulares

kh0d3x

Una vez que le entregas al matchet el pattern, debes utilizar el método find para encontrar las coincidencias, si deseas tener todas las coincidencias, puedes usar un while.

Te dejo un ejemplo funcional

- Extración del contenido (String) de una url
- Extración de datos utilizando expresiones regulares


Código JAVA:
Ver original
  1. package extraerdatos;
  2.  
  3. import java.io.*;
  4. import java.net.*;
  5. import java.util.regex.*;
  6.  
  7. /**
  8.  * @author deerme.org
  9.  */
  10. public class GetPlayers
  11. {
  12.     private String url_site;
  13.     private String content;
  14.    
  15.     public GetPlayers( String url )
  16.     {
  17.         this.url_site = url;
  18.         this.content = "";
  19.     }
  20.     public Boolean GetContent()
  21.     {
  22.         String strContents;
  23.          try
  24.          {
  25.             // Get Content
  26.             byte[] buff = new byte[4096];
  27.             URL url = new URL( this.url_site );
  28.             BufferedInputStream bis = new BufferedInputStream(url.openStream());
  29.  
  30.             int bytesRead = 0;
  31.             while ((bytesRead = bis.read(buff)) != -1)
  32.             {
  33.                 strContents = new String(buff, 0, bytesRead);
  34.                 this.content = this.content + strContents;
  35.             }
  36.             bis.close();
  37.             return true;
  38.         } catch (Exception ex)
  39.         {
  40.             return false;
  41.         }
  42.    
  43.     }
  44.     public void ExtractData()
  45.     {
  46.         int i; int nresult=0;
  47.         if ( !this.content.equals("") )
  48.         {
  49.             Pattern pt = Pattern.compile("<tr class=\"odd\"><td>(.*?)</td><td><a href=\".*?\">(.*?)</a></td><td><a href=\".*?\">(.*?)</a></td><td>(.*?)</td><td>(.*?)</td><td>(.*?)</td> </tr>");
  50.             Matcher mt = pt.matcher(  this.content );
  51.             System.out.println("Equipo\tPosición\tJugador\tPuntos");
  52.             while(  mt.find() == true)
  53.             {
  54.                 System.out.println( mt.group(3) + "\t" + mt.group(1) + "\t" + mt.group(2) + "\t" + mt.group(4)  );
  55.             }
  56.         }
  57.     }
  58. }




Código JAVA:
Ver original
  1. // En mi caso utilizo un proxy para salir a la red
  2.  
  3. public class Main {
  4.    
  5.     public static void main(String[] args)
  6.     {
  7.         System.setProperty("http.proxyHost", "localhost");
  8.         System.setProperty("http.proxyPort", "8889");
  9.  
  10.         GetPlayers pl = new GetPlayers("http://www.nomaskeine.com/estadisticas/puntos/25/mejores/jugadores");
  11.         pl.GetContent();
  12.         pl.ExtractData();
  13.     }
  14.  
  15. }

Última edición por DeeR; 12/10/2011 a las 08:29 Razón: :P
  #5 (permalink)  
Antiguo 12/10/2011, 13:57
 
Fecha de Ingreso: septiembre-2010
Mensajes: 48
Antigüedad: 13 años, 7 meses
Puntos: 3
Respuesta: Expresiones regulares

DeeR, muchísimas gracias; me sirvio bastante aunque ya tenia la peticion y lo demas; solo me faltaba la expresion regular correcta que tenia un ? al final.

Gracias de nuevo.

Etiquetas: expresiones, regulares
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 19:46.