Foros del Web » Programación para mayores de 30 ;) » Programación General »

Problema con una expresion reg, funciona cuando leo todo el fich a una var sino no...

Estas en el tema de Problema con una expresion reg, funciona cuando leo todo el fich a una var sino no... en el foro de Programación General en Foros del Web. Hola, estoy intentando extraer unas cadenas de unos ficheros. La cuestion es que si cargo el contenido del fichero en una variable y extraigo las ...
  #1 (permalink)  
Antiguo 22/01/2009, 10:18
 
Fecha de Ingreso: noviembre-2008
Mensajes: 74
Antigüedad: 15 años, 5 meses
Puntos: 0
Problema con una expresion reg, funciona cuando leo todo el fich a una var sino no...

Hola, estoy intentando extraer unas cadenas de unos ficheros.

La cuestion es que si cargo el contenido del fichero en una variable y extraigo las cadenas funciona bien, pero si leo linea a linea y aplico la expresion regular no va bien.

El fichero tiene esta estructura:
$otraslineas
INCLU / nombref
$$$$$$INCLU / nombref2
INCLU / nombre3
mas lineas

Quiero obtener nombref, nombref3, las que tienen $INCLU son comentarios. Mi expr regular es:
[^\$]*INCLU \/ (.*)

Lo hago de esta forma:

open(F, "fichero");
while ($linea=(<F>)) { #Cargarlo a una variable
$alm.=$linea;
}
while ($alm=~ s/$expr//m) { #Ir extrayendo cadenas y eliminandolo de la cadena
print ":::::::::::$1-$2-$3-$4-$5-$6-$7:::::::::";
}
Y funciona perfecto, me extrae nombref y nombre3.

El problema es que no quiero leer todo el fichero a memoria, algo parecido a esto:
open(F, "aaa");
while ($linea=<F>) {
while ($linea=~ s/$expr//m) {
print ":::::::::::::$1-$2-$3-$4-$5-$6-$7:::::::::::";
}
}

Aqui esta el problema, ¿porque de esta forma tambien obtengo las lineas comentadas? (En el ejemplo nombref2).


Muchas gracias por cualquier idea.
  #2 (permalink)  
Antiguo 23/01/2009, 10:11
Avatar de monoswim
$moderador{'Esteban'}
 
Fecha de Ingreso: febrero-2002
Ubicación: Buenos Aires - Argentina
Mensajes: 8.762
Antigüedad: 22 años, 2 meses
Puntos: 90
Respuesta: Problema con una expresion reg, funciona cuando leo todo el fich a una var

Cita:
while ($linea=<F>) {
while ($linea=~ s/$expr//m) {
print ":::::::::::::$1-$2-$3-$4-$5-$6-$7:::::::::::";
}
}
Porque un while dentro de otro ? eso ejecutará la expresión regular y el print 123344 por cada línea...

Deberías de hacer un solo while y dentro talvés un if print...

Talvés no te esté funcionando por los saltos de línea...

Espero que te sirva

Saludos
__________________
Esteban Quintana
  #3 (permalink)  
Antiguo 23/01/2009, 12:06
 
Fecha de Ingreso: noviembre-2008
Mensajes: 74
Antigüedad: 15 años, 5 meses
Puntos: 0
Respuesta: Problema con una expresion reg, funciona cuando leo todo el fich a una var

Al final he quitado el while y he usado esta expresion: ^INCLU / (.+?)$ y ya me funciona.

Muchas gracias

Saludos
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 21:25.