• Publicidad

Extraer enlaces

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

Extraer enlaces

Notapor BigBear » 2015-01-25 09:50 @451

Hola, estoy programando una expresión regular en Delphi con un componente llamado perlregex, lo que hace que puede usar expresiones regulares de Perl, había pensado en usar la clásica expresión regular así:
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. while($code=~/href="(.*)"/migs) {
  2. print $1;
  3. }
Coloreado en 0.002 segundos, usando GeSHi 1.0.8.4

El problema es que busco extraer todos los enlaces, ya sean de imágenes u otros, no solo los de href, algo así como extraer todos sin filtro.

¿ Alguien me puede ayudar ?
Última edición por explorer el 2015-01-25 10:14 @468, editado 2 veces en total
Razón: expresion => expresión; delphi => Delphi; habia => había; clasica => clásica; expresion => expresión; asi => así; imagenes => imágenes;
BigBear
Perlero frecuente
Perlero frecuente
 
Mensajes: 981
Registrado: 2009-03-01 18:39 @818

Publicidad

Re: Extraer enlaces

Notapor explorer » 2015-01-25 10:58 @498

Supongo que será

(?:src|href)="(.+?)"

pero esto no distingue de los enlaces absolutos o relativos. Si solo quieres los absolutos, pues hay que agregar el protocolo:

(?:src|href)="(https?:.+?)"

pero esto deja fuera otros protocolos, como el ftp.
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14476
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Re: Extraer enlaces

Notapor BigBear » 2015-01-25 12:42 @570

Gracias por la ayuda explorer, ¿pero cómo haría con los enlaces sueltos?, me refiero a los que no están en ninguna etiqueta HTML.

Algo como:
Sintáxis: [ Descargar ] [ Ocultar ]
Using text Syntax Highlighting
dsa
http://localhost/test.php
sad
hola http://localhost/test.html chau
dsa
sad
dsa
dsa
Coloreado en 0.000 segundos, usando GeSHi 1.0.8.4


Esa es mi mayor duda.
Última edición por explorer el 2015-01-25 23:38 @027, editado 1 vez en total
Razón: como => cómo; haria => haría; estan => están;
BigBear
Perlero frecuente
Perlero frecuente
 
Mensajes: 981
Registrado: 2009-03-01 18:39 @818

Re: Extraer enlaces

Notapor ostpulse » 2015-03-16 09:01 @417

Ok, viendo esto me ha surgido una duda: ¿las expresiones regulares no admiten interpolar variables? Por ejemplo, $var=~/$pattern/ :?:

De esa forma y a mi parecer sería algo como esto:
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. @links = qw/http https ftp file/;
  2.  
  3. while($page){
  4.     while(@links){
  5.         $n=0;
  6.         if($page=~/$links[$n]/){
  7.             print "$1\n";
  8.             $n=$n+1;
  9.         }
  10.     }
  11. }
  12.  
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4


Claro, je,je,je. Creo que eso no funciona, pero aprovecho para preguntarlo, je,je :roll:
ostpulse
Perlero nuevo
Perlero nuevo
 
Mensajes: 7
Registrado: 2015-02-22 14:09 @631

Re: Extraer enlaces

Notapor explorer » 2015-03-16 11:53 @537

Variables escalares dentro de una exp. reg. sí que se puede poner. Lo de que sea un elemento de array... tengo mis dudas, pero no me sorprendería de que Perl sí fuera capaz de entenderlo.

De todas formas, esa no es la mejor forma de recorrer un array. Es mejor usar un for():
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. my @protos = qw/http https ftp file/;
  2.  
  3. for my $proto (@protos) {                     # para todos los protocolos
  4.     while ($page =~ /"($proto:.+?)"/g) {      # recorremos repetidamente (/g) la $page buscando por un enlace, entrecomillado
  5.         say $1;                               # y lo sacamos a pantalla
  6.     }
  7. }
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14476
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: Google [Bot] y 6 invitados