• Publicidad

Expresión regular

¿Apenas comienzas con Perl? En este foro podrás encontrar y hacer preguntas básicas de Perl con respuestas aptas a tu nivel.

Expresión regular

Notapor LeoSevilla » 2011-11-19 15:51 @702

Hola.

Quiero sacar una dirección web de un html. Solo quiero la primera URL, y no doy con la tecla.

Parte del html:
Sintáxis: [ Descargar ] [ Ocultar ]
Using html4strict Syntax Highlighting
  1. </div><span class=url>www.<b>sevilla.com</b></span></div>
  2. </div><span class=url>www.<b>madrid.com</b></span></div>
  3. </div><span class=url>www.<b>cordoba.com</b></span></div>
  4. </div><span class=url>www.<b>teruel.com</b></span></div>
  5.  
Coloreado en 0.002 segundos, usando GeSHi 1.0.8.4

Código:

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. $decir =~ /<span class=url>(www.)<b>(.+)<\/b>/;
  2. print $2;
Coloreado en 0.002 segundos, usando GeSHi 1.0.8.4


Tendría que salir "sevilla.com", pero usando el html completo me salen más historias, con lo cual supongo que la expresión no es correcta del todo (ni por asomo :))

salu2


PD: Es mi primer post, con lo cual aprovecho para saludar a todos cordialmente.
LeoSevilla
Perlero nuevo
Perlero nuevo
 
Mensajes: 24
Registrado: 2011-11-19 15:24 @683

Publicidad

Re: Expresión regular

Notapor explorer » 2011-11-19 16:35 @733

Bienvenido a los foros de Perl en español, LeoSevilla.

Prueba con esta:
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. $decir =~ /<span class=url>(www\.)<b>(.+?)</;
  2. print "[$1$2]\n";
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4

El tema estaba en el .+. Por defecto, son avariciosos, así que buscaba desde la primera coincidencia hasta el último '</b>'.

Poniendo .+?, lo convertimos en no avaricioso, con lo que se para en la primera oportunidad. En nuestro caso, justo antes del primer '<' (tampoco es necesario poner '</b>', pues no hay más marchas HTML en medio, así que con '<' nos vale para indicar el final).
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14480
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Re: Expresión regular

Notapor LeoSevilla » 2011-11-19 16:49 @742

¡Caramba!, qué rapidez en contestar. Muuuchas gracias, ahora sí va perfectamente.

Salu2
LeoSevilla
Perlero nuevo
Perlero nuevo
 
Mensajes: 24
Registrado: 2011-11-19 15:24 @683

Re: Expresión regular

Notapor LeoSevilla » 2011-11-19 21:02 @918

Ahora quiero sacar las otras direcciones, y no consigo verlo claro en el editor que uso, pruebo y no doy con la solución, ¿alguna idea?

salu2
LeoSevilla
Perlero nuevo
Perlero nuevo
 
Mensajes: 24
Registrado: 2011-11-19 15:24 @683

Re: Expresión regular

Notapor explorer » 2011-11-19 21:06 @921

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. while ($decir =~ /<span class=url>(www\.)<b>(.+?)</g)  {
  2.     print "$1$2\n";
  3. }
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4

La opción '/g' permite hacer búsquedas repetidas.
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14480
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España


Volver a Básico

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 7 invitados