[Perl] expresion regular

Gunnar Wolf gwolf@campus.iztacala.unam.mx
Fri, 8 Jun 2001 18:42:36 -0500 (CDT)


> Despues de darle mil y una vueltas ( y reconociendo que las expresiones
> regulares siempre se me atraviesan ) os planteo un peque=F1o problema que=
 me
> trae de cabeza:
>
> Se trata de eliminar de una cadena todo aquello que se encuentre en medio
> de dos determinados caracteres:
>
> $linea =3D"texto1  [esto fuera] texto2  [esto tambien] texto3 [esto no lo
> quiero]";
> $linea =3D~ s/\[.*\]//g;
>
> y quiero que el resultado de linea sea:
>
> $linea =3D"texto1  texto2  texto3 ";
>
> Es decir todo lo que se encuentre entre corchetes [] eliminarlo de la
> cadena.
>
> Me he tirado un monton de horas y no consigo el resultado que quiero

Me suena sencillo, y corro el riesgo de quedar bastante mal... Pero...
Intenta:

$linea =3D~ s/(esto fuera|esto tambien|esto no lo quiero)//g;

El poner las tres expresiones entre par=E9ntesis separadas por barras indic=
a
que cualquiera de las ocurrencias ser=E1 exitosa. El poner la g al final
hace que sea un patr=F3n greedy (ambicioso? avaro? C=F3mo se traduc=EDa?), =
y se
busque tantas veces como sea necesario en la cadena.

Saludos,

------------------------------------------------------------
Gunnar Wolf - gwolf@campus.iztacala.unam.mx - (+52)5623-1119
Desarrollo y Admon. de Sistemas en Red - FES Iztacala - UNAM
Departamento de Seguridad en Computo   -   DGSCA    -   UNAM
------------------------------------------------------------
Quidquid latine dictum sit, altum viditur.