• Publicidad

Substituir apariciones entre determinados strings

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

Substituir apariciones entre determinados strings

Notapor jor73 » 2014-02-21 13:18 @596

Necesito substituir todas las apariciones de texto entre <b> y </b> de un html por su correspondiente hipervínculo.

Por ejemplo,
Sintáxis: [ Descargar ] [ Ocultar ]
Using html4strict Syntax Highlighting
  1. <b>pepito<b><b>fulanito</b>
Coloreado en 0.002 segundos, usando GeSHi 1.0.8.4
por
Sintáxis: [ Descargar ] [ Ocultar ]
Using html4strict Syntax Highlighting
  1. <b><a href="http://www.pepito.com">pepito</a><b><b><a href="http://www.fulanito.com">fulanito</a></b>
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4
y quería saber si se puede hacer con un solo s//g.

Tampoco tengo claro si le pongo que coja lo que hay entre <b> y </b> que no me vaya a coger el primer <b> con el último </b>.

¿Alguna idea de cómo hacerlo?

¡Gracias!
jor73
Perlero nuevo
Perlero nuevo
 
Mensajes: 2
Registrado: 2014-02-21 13:10 @590

Publicidad

Re: Substituir apariciones entre determinados strings

Notapor explorer » 2014-02-21 14:43 @655

Bienvenido a los foros de Perl en Español, jor73.

Esta es una forma de hacerlo.

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. $html = '<b>pepito</b><b>fulanito</b>';
  2.  
  3. $html =~ s{<b>(.*?)</b>}
  4.           {<b><a href="http://www.$1.com">$1</a></b>}g;
  5.  
  6. print "$html\n";
Coloreado en 0.002 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: 14480
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Re: Substituir apariciones entre determinados strings

Notapor jor73 » 2014-02-24 10:40 @486

¡Muchas gracias!

Faltaría solamente poner $1 en lugar de pepito en la línea 4.

El '?' hace que coja el patrón más corto, ¿no?

Saludos,
Jor
jor73
Perlero nuevo
Perlero nuevo
 
Mensajes: 2
Registrado: 2014-02-21 13:10 @590

Re: Substituir apariciones entre determinados strings

Notapor explorer » 2014-02-24 11:43 @530

Arreglado :)

Sí, el '?' se refiere a que queremos que coincida el patrón con el menor número posible de caracteres, antes de llegar a '</b>'.

De esta manera, evitamos que el comodín '.*' se "coma" todos los caracteres del archivo, hasta el final. Queremos que vaya poco a poco.
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 12 invitados