Foros del Web » Programando para Internet » PHP »

Problema con expreciones regulares.

Estas en el tema de Problema con expreciones regulares. en el foro de PHP en Foros del Web. Hola amigos. Tengo un archivo txt de 3 mb la cual sta formado mas o menos de esta manera. 45.495433 45.500003 -45.903994 -45.829344 -46.349555 78.342393 ...
  #1 (permalink)  
Antiguo 14/09/2009, 14:43
 
Fecha de Ingreso: julio-2009
Mensajes: 34
Antigüedad: 14 años, 9 meses
Puntos: 0
Problema con expreciones regulares.

Hola amigos.

Tengo un archivo txt de 3 mb la cual sta formado mas o menos
de esta manera.

45.495433
45.500003
-45.903994
-45.829344
-46.349555
78.342393
78.343443
-78.349323
88.304994

La idea es poder sacar todos los 45. positivos y los 78. posivitos

Para eso estoy haciendo.


Código PHP:
Ver original
  1. $d = "
  2. 45.495433        
  3. 45.500003        
  4. -45.903994
  5. -45.829344
  6. -46.349555
  7. 78.342393
  8. 78.343443
  9. -78.349323
  10. 88.304994
  11. ";
  12. preg_match_all("/^(45.*?)/",$d,$datos);
  13.  
  14. foreach($datos[0] as $field){
  15.  
  16. echo $field;
  17.  
  18. }
Pero no me genera todas los resultados iguales a 45.
como tendria que hacerlo.
Gracias.
  #2 (permalink)  
Antiguo 14/09/2009, 15:12
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 14 años, 11 meses
Puntos: 1517
Respuesta: Problema con expreciones regulares.

Tratalo de esta forma. No puedes usar ^ al principio porque estas indicandole que encuentre lo que quieres desde el principio del string, y todos ellos no estan desde el principio sino regados dentro del string
Código PHP:
Ver original
  1. <?php
  2. $d = "
  3. 45.495433        
  4. 45.500003        
  5. -45.903994
  6. -45.829344
  7. -46.349555
  8. 78.342393
  9. 78.343443
  10. -78.349323
  11. 88.304994
  12. ";
  13. preg_match_all("/[^\-]45\.\d+/",$d,$datos);
  14.  
  15. print_r($datos);
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #3 (permalink)  
Antiguo 14/09/2009, 18:49
Avatar de America|UNK  
Fecha de Ingreso: noviembre-2006
Ubicación: Piura - Perú
Mensajes: 582
Antigüedad: 17 años, 5 meses
Puntos: 56
Respuesta: Problema con expreciones regulares.

Código PHP:
preg_match_all("/\s(45|78)/",$d,$datos); 
__________________
/* El que atiende, entiende..., el que entiende, aprende!.
Desarrollo Web Freelance, Contactar */
  #4 (permalink)  
Antiguo 14/09/2009, 21:52
 
Fecha de Ingreso: julio-2009
Mensajes: 34
Antigüedad: 14 años, 9 meses
Puntos: 0
Respuesta: Problema con expreciones regulares.

Muchas gracias, ambos me ayudaron, al final termine haciendo un fucion de las dos formas.

Código PHP:
Ver original
  1. preg_match_all("/\s(45)\.\d+/",$con,$datos);

abimaelrc no use su forma 100% por que dentro del patron incluyes -45.xx los 45 negativos y solo querias positivos.



Felicidades por tu 5 estrellas muy bien ganadas.

Gracias.
  #5 (permalink)  
Antiguo 14/09/2009, 22:21
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 14 años, 11 meses
Puntos: 1517
Respuesta: Problema con expreciones regulares.

No, en el caso que te doy excluye los negativos. Si te fijas lo coloque asi [^\-] esto hace que no incluya aquellos que son negativos. Tratalo para que veas.
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
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 07:21.