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:
<div class="plist-manufacturer">
<a href="http:\\linkcualquiera">Nombre</a>
</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:
Pattern patronAutores = Pattern.compile("<a\\b[^>]*href=\"[^>]*>(.*?)</a>");
Matcher encontrado = patronAutores.matcher(stringToParse);
return encontrado.group(1);
Me devuelve que no ha sido encontrado nada...
Alguien tiene idea de cómo podría hacerlo?
Saludos
Del tipo...,?
<a.*?>(.*?)<\/a>
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.
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
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.
no es lo mejor pero puedes intentar esto:
<div class="plist-manufacturer">[\n\r\t ]+<a href=\"[a-zA-Z0-9\\\\\:]+\">[a-zA-Z0-9]+
despues remplazas:
<div class="plist-manufacturer">[\n\r\t ]+<a href=\"[a-zA-Z0-9\\\\\:]+\">
y de esta forma te quedara nombre saludos :D
Ya retorné.
mmm por qué tienes http:\\ :huh:
Te servirá esto?.
try {
String html = "<div class=\"plist-manufacturer\"><a href=\"http://linkcualquiera\">Nombre</a></div>";
String pattern = "href=\"http://([^\"]+).+?>(.+?)</a>";
Matcher matcher = Pattern.compile(pattern).matcher(html);
System.out.println("matcher-> "+html);
while (matcher.find()) {
System.out.println("Nombre: " + matcher.group(2) + " | Enlace: " + matcher.group(1));
}
} catch(Exception e) {
e.printStackTrace();
}
Modificado:
Así para http y https
String pattern = "href=\"(https?|http)://([^\"]+).+?>(.+?)</a>";
Saludos.