• Publicidad

Ayuda con un reemplazo de un texto

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

Ayuda con un reemplazo de un texto

Notapor Lacry » 2006-06-27 15:37 @692

Necesito si me pueden ayudar con esto ya que recien me inicio en Perl y no estoy muy acostumbrado al lenguaje.
Lo que necesito es que dados dos textos:

Texto1: [reemp] Este texto debe ser reemplazado [/reemp] Pero este no.

Texto2: Texto que remplazara a cualquier texto que se encuentre entre [reemp] y [/reemp]


el programa debe reemplazar el texto que se encuentra encerrado entre [reemp] y [/reemp] con un texto nuevo (Texto2). Por supuesto [reemp] y [/reemp] no deben ser mostrados. Lo que busco es que el programa localice las frases que están encerradas entre [reemp] y [/reemp] y las modifique de alguna forma, en este caso cambiándolas por otro texto.
No se si lo que estoy pidiendo es imposible o una tontería asi que pido que sean compasivos con mi pedido :P
Si no se entiende algo no duden en preguntarme

Muchas gracias!
Lacry
Perlero nuevo
Perlero nuevo
 
Mensajes: 3
Registrado: 2006-06-27 15:23 @683

Publicidad

Notapor monoswim » 2006-06-27 19:11 @841

probá con algo parecido a esto

$linea =~ s/\[reemp\].*?\[reemp\]/$newstring/;

Es una expresión regular que hice recién en el momento...Si no sabes de expresioner regulares te recomiendo la sección de tutoriales de este mismo sitio, hay 2 muy buenos acerca del tema...

Espero que te sirva

Saludos
MonoSwim
Perl Programming Language
Avatar de Usuario
monoswim
Perlero nuevo
Perlero nuevo
 
Mensajes: 452
Registrado: 2003-11-18 16:13 @717
Ubicación: Buenos Aires

Notapor Lacry » 2006-06-27 20:38 @901

Muchas gracias monoswim!
Ya mismo leeré los tutoriales que hay sobre el tema y gracias por el código :D
Lacry
Perlero nuevo
Perlero nuevo
 
Mensajes: 3
Registrado: 2006-06-27 15:23 @683

Notapor kidd » 2006-06-28 10:14 @468

monoswim escribiste:probá con algo parecido a esto

$linea =~ s/\[reemp\].*?\[reemp\]/$newstring/;

Es una expresión regular que hice recién en el momento...Si no sabes de expresioner regulares te recomiendo la sección de tutoriales de este mismo sitio, hay 2 muy buenos acerca del tema...

Espero que te sirva

Saludos


Solamente como comentario, me parece que a Monoswim le faltó un caracter, pues realmente tu quieres sustituir lo que está entre:

Código: Seleccionar todo
[reemp] Este texto debe ser reemplazado [/reemp]


Entonces, a la expresión el falta un parte, por lo que sería:

Código: Seleccionar todo
    $linea =~ s/\[reemp\](?:.*?)\[\/reemp\]/$newstring/;


Ahora, si tu línea tiene más ocurrencias de [reemp]...[/reemp], entonces deberemos de usar la opción g:

Código: Seleccionar todo
    $linea =~ s/\[reemp\](?:.*?)\[\/reemp\]/$newstring/g;


Más detalles acerca de esto lo puedes ver en los tutoriales de expresiones regulares que hay en el sitio:
http://perlenespanol.com/archives-tut/c ... lares.html


Saludos
Uriel Lizama Perl programmer fundador de Perl en Español
Perl Programming Language
Avatar de Usuario
kidd
Creador de Perl en Español
Creador de Perl en Español
 
Mensajes: 1166
Registrado: 2003-10-15 16:52 @744
Ubicación: México

Notapor Lacry » 2006-06-28 12:10 @549

Gracias kidd! gracias a ustedes pude resolver el problema, les agradezco mucho :)
Lacry
Perlero nuevo
Perlero nuevo
 
Mensajes: 3
Registrado: 2006-06-27 15:23 @683


Volver a Básico

¿Quién está conectado?

Usuarios navegando por este Foro: Bing [Bot] y 20 invitados