[Perl] regexp

sondrobe sondrobe@nysnet.com.ar
Tue, 9 Jul 2002 23:26:11 -0300


Gente:
    estoy ocn un problemita con un script que quiero hacer, resulta que
tengo unos datos en un texto separado por ";", la cosa es que en uno de l=
os
atributos de la tabla -sin que me haya dado cuenta- estuvieron cargando
datos y cuando separaban los mismos en vez de hacerlo con "," lo hac=EDa =
con
";" y yo ahora estoy con un problema que que al querer usar la funci=F3n =
split
de perl a algunos registros me los separa bien mientras que otros, por lo
dicho anteriormente, tienen m=E1s registros. Por si mi redacci=F3n es un =
tanto
escasa un ejemplo del problema es este:

Gonzalo;Aguirre;23;27198259;"Chubut 1495;Barrio Trapiche"
Lito;Cruz;43;1392334;"Una Calle 33;Barrio un_barrio"

y as=ED, la idea es que creo que puedo solucionar esto mediante algo de
expresiones regulares ya que s=E9 que todos los ";" que est=E1n entre com=
illas
los tiene que pasar por alto y de estos no me tiene que realizar un split=
. O
tal vez hacer que los puntos y comas que est=E1s dentro de una comillas
cambien a coman simples.

    S=F3lo se me ha ocurrido hacerlo con un condicional y luego con una
expresi=F3n regular bastante simple, pero creo que no estoy usando toda l=
a
potencia de las expresiones, la idea que se me ha ocurrido para soluciona=
rlo
es tener una variable de estado donde cada vez que aparece una comilla la
pone en 1 y esto indica que s/;/,/g y mientras est=E1 en 0 obviamente no =
se
ejecutar=EDa la l=EDnea, a dem=E1s de poner la variable en 0 a la siguien=
te
aparici=F3n de unas comillas.

    Bueno espero haber sido expl=EDcito, y poder meterme un poco m=E1s en=
 esto
de las expresiones regulares a fin de dar una soluci=F3n m=E1s perl que C.
Gracias a todos.

--
gonzalo aguirre - sondrobe [at] iespana [dot] es