Perl en Español

  1. Home
  2. Tutoriales
  3. Foro
  4. Artículos
  5. Donativos
  6. Publicidad
 

Ayuda con un reemplazo de un texto

 
Publicar nuevo tema   Responder al tema    Foros de discusión -> Básico
Mensaje Mar Jun 27, 2006 2:37 pm
Lacry
Perlero Nuevo
Perlero Nuevo
Registrado: 27 Jun 2006
Mensajes: 3
Ayuda con un reemplazo de un texto Responder citando

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 Razz
Si no se entiende algo no duden en preguntarme

Muchas gracias!
Mensaje Mar Jun 27, 2006 6:11 pm
monoswim
Vive para Perl en Español
Vive para Perl en Español
Registrado: 18 Nov 2003
Mensajes: 720
Ubicación: Buenos Aires
Responder citando

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
Mensaje Mar Jun 27, 2006 7:38 pm
Lacry
Perlero Nuevo
Perlero Nuevo
Registrado: 27 Jun 2006
Mensajes: 3
Responder citando

Muchas gracias monoswim!
Ya mismo leeré los tutoriales que hay sobre el tema y gracias por el código Very Happy
Mensaje Mie Jun 28, 2006 9:14 am
kidd
Creador de Perl en Español
Creador de Perl en Español
Registrado: 15 Oct 2003
Mensajes: 1390
Ubicación: México
Responder citando

monoswim escribió:
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:

[reemp] Este texto debe ser reemplazado [/reemp]


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

Código:

    $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:

    $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.baboonsoftware.com/archives-tut/cat_expresiones_regulares.html


Saludos
Mensaje Mie Jun 28, 2006 11:10 am
Lacry
Perlero Nuevo
Perlero Nuevo
Registrado: 27 Jun 2006
Mensajes: 3
Responder citando

Gracias kidd! gracias a ustedes pude resolver el problema, les agradezco mucho Smile
Publicar nuevo tema   Responder al tema    Foros de discusión -> Básico Todas las horas son GMT - 6 Horas
Página 1 de 1



Powered by phpBB © 2001, 2005 phpBB Group