Foros del Web » Programando para Internet » PHP »

precg_match funciona pero no cmo yo quiero

Estas en el tema de precg_match funciona pero no cmo yo quiero en el foro de PHP en Foros del Web. hola tengo una serie de archivos archivo1.jpg archivo1_2.jpg archivo1_3.jpg archivo2.jpg archivo2_1.jpg archivo3.jpg y tengo un Código PHP: preg_match ( "/archivo1/" ,  $cadena )  y me ...
  #1 (permalink)  
Antiguo 04/04/2013, 09:38
Avatar de engonga
Usuario no validado
 
Fecha de Ingreso: marzo-2002
Ubicación: Buenos Aires
Mensajes: 1.300
Antigüedad: 22 años, 1 mes
Puntos: 8
precg_match funciona pero no cmo yo quiero

hola tengo una serie de archivos

archivo1.jpg
archivo1_2.jpg
archivo1_3.jpg

archivo2.jpg
archivo2_1.jpg
archivo3.jpg


y tengo un
Código PHP:
preg_match("/archivo1/"$cadena
y me saca bien si busco asi

pero si tengo un archivo llamado archivo12_2.jpg tambien me lo saca y quisiera que me lo sacara si le paso el patrón "archivo12"

me he estado mirando lo de las expresiones regulares pero no encuentro la solución


alguna idea?
  #2 (permalink)  
Antiguo 04/04/2013, 09:54
webankenovi
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: precg_match funciona pero no cmo yo quiero

especifica un poco mas que es lo que quieres hacer para poder entenderte y darte un poco de luz , que contiene cadena una busqueda de archivos?
  #3 (permalink)  
Antiguo 04/04/2013, 09:58
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: precg_match funciona pero no cmo yo quiero

Es bastante sencillo si sabes cómo funcionan las expresiones regulares, así que si la restricción es "y que a la derecha no exista ningún número" o bien, "que a la derecha tenga un punto" podría ser algo así.

Cita:
/x1(?=\.|\D)/
Espero se entienda.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #4 (permalink)  
Antiguo 04/04/2013, 10:14
Avatar de engonga
Usuario no validado
 
Fecha de Ingreso: marzo-2002
Ubicación: Buenos Aires
Mensajes: 1.300
Antigüedad: 22 años, 1 mes
Puntos: 8
Respuesta: precg_match funciona pero no cmo yo quiero

a ver intento explicarme mejor


lo que hago es recorrer todo un directorio con muchsa fotos y los archivos tienen nombres como

1c_archivo1.jpg
archivo1.jpg
archivo1_2.jpg
1r_archivo1_3.jpg

archivo2.jpg
3d_archivo2_3.png
archivo2_5.jpg

1d_archivo12.jpg
archivo12.png
archivo12_9.png
archivo12_66.jpg

(los nombres son un ejemplo)

entonces estoy filtrando ¡todos los archivos que cumplan el patrón "archivo1" pero tambien me muestra los archivos que tienen "archivo12" que estos los tendria que mostrar si le digo al preg_match que me busque /archivo12/ y no si le digo que me busque /archivo1/

espero haberme explicado ahora
  #5 (permalink)  
Antiguo 04/04/2013, 10:20
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: precg_match funciona pero no cmo yo quiero

Lee mi respuesta anterior, el problema no es de preg_match() es que la expresión regular que estás usando no entiende las reglas que estás estableciendo, simplemente porque no las estás considerando dentro de la expresión.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #6 (permalink)  
Antiguo 04/04/2013, 10:48
Avatar de engonga
Usuario no validado
 
Fecha de Ingreso: marzo-2002
Ubicación: Buenos Aires
Mensajes: 1.300
Antigüedad: 22 años, 1 mes
Puntos: 8
Respuesta: precg_match funciona pero no cmo yo quiero

es que no estoy usando ninguna expresion regular. simplemente le digo asi

Código PHP:

while ($archivo readdir($directorio)){

$buscar ="/archivo1/";

$resultado preg_match($buscar$archivo);


if (!
$resultado==FALSE){

   
$archivos[]= $archivo//armo un array con los valores

}




por eso no uso ninguna expresion regular
  #7 (permalink)  
Antiguo 04/04/2013, 10:51
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: precg_match funciona pero no cmo yo quiero

Cita:
Iniciado por engonga Ver Mensaje
es que no estoy usando ninguna expresion regular. simplemente le digo asi [...] por eso no uso ninguna expresion regular
Es evidente que no sabes entonces que es un expresión regular.

Esto es una expresión regular:
Cita:
$buscar ="/archivo1/";
Si, la parte de /archivo1/ es una patrón, es decir, una expresión regular.

He ahí la clave, ahora lee mis respuestas anteriores para que te des una idea de lo que me refiero.

Además tu mismo dijiste esto:
Cita:
me he estado mirando lo de las expresiones regulares pero no encuentro la solución
¿Seguro que no estás usando expresiones regulares?

Yo veo que si.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #8 (permalink)  
Antiguo 04/04/2013, 11:12
Avatar de engonga
Usuario no validado
 
Fecha de Ingreso: marzo-2002
Ubicación: Buenos Aires
Mensajes: 1.300
Antigüedad: 22 años, 1 mes
Puntos: 8
Respuesta: precg_match funciona pero no cmo yo quiero

leo los mensajes anteriores y no encuentro solución

Cita:
/x1(?=\.|\D)/
sónde le pongo que mi patrón es archivo1 ?

y si no entiendo de expresiones regulares

no todo el mundo sale enseñado.


nota: estoy intentandolo hacerde otra manera... muchas gracias
  #9 (permalink)  
Antiguo 04/04/2013, 11:20
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: precg_match funciona pero no cmo yo quiero

Bueno, el tema es que sepas con que tipo de herramientas estás tratando, nadie te está diciendo que es malo no saber lo que se hace.

Pero el tema de RegExp (expresiones regulares) es algo complicado, así que si no lo consigues sin usar RegExp lo ideal es que estudies un poco para que puedas entender el tema.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #10 (permalink)  
Antiguo 04/04/2013, 11:20
Avatar de engonga
Usuario no validado
 
Fecha de Ingreso: marzo-2002
Ubicación: Buenos Aires
Mensajes: 1.300
Antigüedad: 22 años, 1 mes
Puntos: 8
Respuesta: precg_match funciona pero no cmo yo quiero

ahora he entendido lo de la expesion pero lo que no entiendo es como le dices que no tenga un numero

con esto (?=\.|\D)
  #11 (permalink)  
Antiguo 04/04/2013, 11:30
Avatar de engonga
Usuario no validado
 
Fecha de Ingreso: marzo-2002
Ubicación: Buenos Aires
Mensajes: 1.300
Antigüedad: 22 años, 1 mes
Puntos: 8
Respuesta: precg_match funciona pero no cmo yo quiero

de la expresion netiendo que

una seria esta ?=\.

y la otra seria esta \D

por que entiendo que el | es como el "or" no

ahora bien que expresion hace cada cosa? la primera es la que le digo que tengo un punto y la segunda que no tenga ningun numero?
  #12 (permalink)  
Antiguo 04/04/2013, 11:30
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: precg_match funciona pero no cmo yo quiero

Si, el grupo (?=) sirve para "buscar a la derecha", ahora, las sub-expresiones pasadas \. (punto escapado) o \D (negación para dígitos) representan eso que "debe estar a la derecha" y siendo un punto, o un no-dígito se entiende el objetivo del grupo.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #13 (permalink)  
Antiguo 04/04/2013, 11:32
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: precg_match funciona pero no cmo yo quiero

Volviendo a lo anterior, lo importante de la sub-expresión sería \.|\D que significaría "un punto o un no-número", a ver si lo pillas.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #14 (permalink)  
Antiguo 04/04/2013, 11:37
Avatar de engonga
Usuario no validado
 
Fecha de Ingreso: marzo-2002
Ubicación: Buenos Aires
Mensajes: 1.300
Antigüedad: 22 años, 1 mes
Puntos: 8
Respuesta: precg_match funciona pero no cmo yo quiero

lo entiendo muchas gracias

estoy haciendo pruebas aquí
http://www.metriplica.com/es/recurso...ones-regulares

Etiquetas: quiero
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 05:52.