elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Arreglado, de nuevo, el registro del warzone (wargame) de EHN


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  Problema con regexp (Parseando HTML)
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Problema con regexp (Parseando HTML)  (Leído 2,744 veces)
Debci
Wiki

Desconectado Desconectado

Mensajes: 2.021


Actualizate o muere!


Ver Perfil WWW
Problema con regexp (Parseando HTML)
« en: 6 Marzo 2013, 17:02 pm »

Hola amigos :)

Os traigo una duda que tengo con la librería regexp de Java, mas en concreto, con las expresiones que esta debe buscar a partir del patrón de la cadena.

Tengo varias strings del tipo:
Código
  1. <div class="plist-manufacturer">
  2. <a href="http:\\linkcualquiera">Nombre</a>
  3. </div>

Y lo que necesito es extraer el dato que ocupa el lugar de "Nombre".
Para ello he empezado a trabajar con regexp, pero no logro dar con la expresión que me permita obtener dicho dato:
Código
  1.        Pattern patronAutores = Pattern.compile("<a\\b[^>]*href=\"[^>]*>(.*?)</a>");
  2.        Matcher encontrado = patronAutores.matcher(stringToParse);
  3.        return encontrado.group(1);
  4.  

Me devuelve que no ha sido encontrado nada...
Alguien tiene idea de cómo podría hacerlo?

Saludos


En línea

Shell Root
Moderador Global
***
Desconectado Desconectado

Mensajes: 3.724


<3


Ver Perfil WWW
Re: Problema con regexp (Parseando HTML)
« Respuesta #1 en: 6 Marzo 2013, 17:20 pm »

Del tipo...,?
Código
  1. <a.*?>(.*?)<\/a>


En línea

Te vendería mi talento por poder dormir tranquilo.
1mpuls0


Desconectado Desconectado

Mensajes: 1.186


Ver Perfil
Re: Problema con regexp (Parseando HTML)
« Respuesta #2 en: 6 Marzo 2013, 17:23 pm »

Qué hay!

El contenido html lo tienes en una variable string o cómo manejas esa información (archivo de texto, etc), lo digo por las comillas dobles, recuerda que si menejas string en java tendrías que poner un carácter de escape ( \ ) y la expresión cambiaría un  poco o bien sustituir las comillas dobles por simple.

La expresión tendría que buscar entre todo el div, todo el html o solo en la etiqueta a?.

Saludos.
En línea

abc
Debci
Wiki

Desconectado Desconectado

Mensajes: 2.021


Actualizate o muere!


Ver Perfil WWW
Re: Problema con regexp (Parseando HTML)
« Respuesta #3 en: 6 Marzo 2013, 17:27 pm »

El código HTML que quiero parsear, esta en una String, que viene a ser lo que he especificado. Se que hay que saltar los div's (o quizás no :O) y luego leer el "<a href=....></a>" de forma generalizada, pero ya digo, no se exactamente cómo debo evitar las divs ni luego que expresión utilizar para el a href.
He probado la que deja el compañero de arriba, pero sigue sin dar resultado :O

La expresión solo busca en el div.
Con un parser html (Jsoup), ya he separado los divs de todo el código.

Saludos
« Última modificación: 6 Marzo 2013, 17:29 pm por Debci » En línea

1mpuls0


Desconectado Desconectado

Mensajes: 1.186


Ver Perfil
Re: Problema con regexp (Parseando HTML)
« Respuesta #4 en: 6 Marzo 2013, 17:41 pm »

Mira aquí hay para buscar en html.

http://www.tatai.es/2009/08/22/5-expresiones-regulares-que-todo-programador-web-deberia-conocer/

Perdón te ayudaría me acaba de llegar trabajo xD

Saludos.
En línea

abc
Slider324

Desconectado Desconectado

Mensajes: 45


Ver Perfil
Re: Problema con regexp (Parseando HTML)
« Respuesta #5 en: 6 Marzo 2013, 23:51 pm »

no es lo mejor pero puedes intentar esto:

Código
  1. <div class="plist-manufacturer">[\n\r\t ]+<a href=\"[a-zA-Z0-9\\\\\:]+\">[a-zA-Z0-9]+

despues remplazas:

Código
  1. <div class="plist-manufacturer">[\n\r\t ]+<a href=\"[a-zA-Z0-9\\\\\:]+\">

y de esta forma te quedara nombre saludos :D
« Última modificación: 6 Marzo 2013, 23:57 pm por Slider324 » En línea

1mpuls0


Desconectado Desconectado

Mensajes: 1.186


Ver Perfil
Re: Problema con regexp (Parseando HTML)
« Respuesta #6 en: 7 Marzo 2013, 01:29 am »

Ya retorné.

mmm por qué tienes http:\\  :huh:

Te servirá esto?.

Código
  1. try {
  2.            String html = "<div class=\"plist-manufacturer\"><a href=\"http://linkcualquiera\">Nombre</a></div>";
  3.  
  4.            String pattern = "href=\"http://([^\"]+).+?>(.+?)</a>";
  5.            Matcher matcher = Pattern.compile(pattern).matcher(html);
  6.            System.out.println("matcher-> "+html);
  7.  
  8.            while (matcher.find()) {
  9.             System.out.println("Nombre: " + matcher.group(2) + " | Enlace: " + matcher.group(1));
  10.            }
  11.        } catch(Exception e) {
  12.            e.printStackTrace();
  13.        }
  14.  

Modificado:
Así para http y https
Código
  1. String pattern = "href=\"(https?|http)://([^\"]+).+?>(.+?)</a>";
  2.  

Saludos.
« Última modificación: 7 Marzo 2013, 01:35 am por Darhius » En línea

abc
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Parseando XML en Python
Scripting
Manibal_man 0 3,205 Último mensaje 23 Abril 2006, 20:57 pm
por Manibal_man
<Python> Regexp? Dudas con peticiones web
Scripting
xassiz_ 2 4,060 Último mensaje 13 Abril 2010, 01:16 am
por Shell Root
Denial of Service in RegExp
Bugs y Exploits
SH4V 2 4,081 Último mensaje 13 Mayo 2010, 15:57 pm
por SH4V
RegExp Numero de string [Python]
Scripting
Ricardo95 1 3,627 Último mensaje 15 Abril 2011, 00:46 am
por Novlucker
[Problema / Duda] RegEXP
PHP
venadHD 3 1,945 Último mensaje 11 Abril 2015, 16:55 pm
por venadHD
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines