[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.