• Publicidad

Expresiones regulares para reemplazar código HTML

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

Expresiones regulares para reemplazar código HTML

Notapor rithchard » 2011-08-14 00:09 @048

¿Cómo puedo reemplazar esto
Sintáxis: [ Descargar ] [ Ocultar ]
Using html4strict Syntax Highlighting
  1. "<img alt="" src="http://mywebimage.com/thumb/4/45/Glider.svg/220px-Glider.svg.png" class="thumbimage" height="220" width="220">"
Coloreado en 0.002 segundos, usando GeSHi 1.0.8.4

por:
Sintáxis: [ Descargar ] [ Ocultar ]
Using html4strict Syntax Highlighting
  1. "<img alt="" src="img/220px-Glider.svg.png" class="thumbimage" height="220" width="220">"
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4
?


Sintáxis: [ Descargar ] [ Ocultar ]
Using html4strict Syntax Highlighting
  1. <html>
  2. <img alt="" src="http://mywebimage.com/thumb/4/45/Glider.svg/220px-Glider.svg.png" class="thumbimage" height="220" width="220"></a><br>
  3. <div class="thumbcaption"><img src="http://mywebimage.com/common/2/foto.jpg" alt="" height="11" width="15"><br><p>
  4. <div class="internal" title="Aumentar"><img src="http://mywebimage.com/common/images/magnify-clip.png" alt="" height="11" width="15"></a><br>
  5. </div>
  6. </html>
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4


En otras palabras, quisiera que el anterior código me quedara así:
Cambiar solo entre las etiquetas "<img >" sin alterar al resto del código HTML.

Sintáxis: [ Descargar ] [ Ocultar ]
Using html4strict Syntax Highlighting
  1. <html>
  2. <img alt="" src="img/220px-Glider.svg.png" class="thumbimage" height="220" width="220"></a><br>
  3. <div class="thumbcaption"><img src="img/foto.jpg" alt="" height="11" width="15"><br><p>
  4. <div class="internal" title="Aumentar"><img src="img/magnify-clip.png" alt="" height="11" width="15"></a><br>
  5. </div>
  6. </html>
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4


Saludos y las gracias desde ya.
rithchard
Perlero nuevo
Perlero nuevo
 
Mensajes: 17
Registrado: 2010-04-19 11:59 @540

Publicidad

Re: Expresiones regulares para reemplazar código HTML

Notapor pvaldes » 2011-08-14 06:32 @314

No sé si lo he entendido bien. Para reemplazar uno por otro tendrías que escribir una línea como:

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. my $x =~ s/http:/\/mywebimage.com\/thumb\/4\/45\/Glider.svg/img/
Coloreado en 0.002 segundos, usando GeSHi 1.0.8.4


o alternativamente ir paso a paso, primero cambiamos el nombre de la web por la cadena vacía para todos los casos

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. =~ s/http\:\/\/mywebimage.com//g
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4


y luego tenemos que ver qué restos quedan e ir afinando cosas como "common", "thumb", "image", etc.
pvaldes
Perlero nuevo
Perlero nuevo
 
Mensajes: 129
Registrado: 2011-01-22 12:56 @580

Re: Expresiones regulares para reemplazar código HTML

Notapor explorer » 2011-08-14 07:25 @350

Podría ser así:
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. #!/usr/bin/perl
  2. use File::Slurp;
  3.  
  4. my $html = read_file('kk.html');
  5.  
  6. $html =~ s{<img.*? src="\Khttp:[^"]+/(.+?")}{img/$1}gsm;
  7.  
  8. print $html;
  9.  
  10. __END__
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4

La expresión regular quiere decir:
  • buscamos por la cadena "<img"
  • después de ella puede haber cualquier número de caracteres (.*?), pero debe ocurrir que después debe seguirle...
  • una cadena " src=""
  • ya hemos encontrado lo que nos interesa. Con \K "olvidamos" todo lo que hemos encontrado hasta ahora, ya que no queremos modificarlo
  • vemos si después le sigue una cadena de caracteres "http:"
  • seguido de un grupo de caracteres que no sean las dobles comillas de cierre ([^"]+)
  • y seguido por un "/". De esta manera hemos localizado la última barra de la URL
  • ahora, capturamos todo lo que haya hasta las próximas comillas dobles, inclusive ((.+?")).
  • La sustitución de lo capturado es por la cadena "img/", seguido por la propia captura ($1)
  • Y eso lo repetimos para todo el fichero (/g).
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 3 invitados