Foros del Web » Programando para Internet » PHP »

Expresión regular

Estas en el tema de Expresión regular en el foro de PHP en Foros del Web. Requiero REMOVER solo la primer aparición de n apariciónes, por ejemplo esto va muy bien: echo "\n".preg_replace('/\w+\./','','tin.tin'); Pero aquí requiero obtener tin.tin y solo obtengo ...
  #1 (permalink)  
Antiguo 09/08/2010, 13:07
 
Fecha de Ingreso: febrero-2004
Mensajes: 1.987
Antigüedad: 20 años, 2 meses
Puntos: 22
Expresión regular

Requiero REMOVER solo la primer aparición de n apariciónes, por ejemplo esto va muy bien:

echo "\n".preg_replace('/\w+\./','','tin.tin');

Pero aquí requiero obtener tin.tin y solo obtengo tin:

echo "\n".preg_replace('/(\w+\.){1}/','','tin.tin.tin');

que me falta?

Gracias
  #2 (permalink)  
Antiguo 09/08/2010, 13:16
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, 10 meses
Puntos: 1517
Respuesta: Expresión regular

De la forma que lo logré, no fue con expresiones regulares sino con array. Ejemplo
Código PHP:
Ver original
  1. <?php
  2. $e = explode('.', 'tin.tin.tin');
  3. unset($e[0]);
  4. echo implode('.', $e);
__________________
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 09/08/2010, 13:20
Colaborador
 
Fecha de Ingreso: octubre-2009
Ubicación: Tokyo - Japan !
Mensajes: 3.867
Antigüedad: 14 años, 6 meses
Puntos: 334
Respuesta: Expresión regular

si aun deseas las regex solo te falta ponerle al inicio un signo ^ para que le digas a la expresión que la palabra esta al inicio del string!

saludos!

Código PHP:
Ver original
  1. echo preg_replace('/^\w+\./','','tin.tin.tin');
__________________
More about me...
~ @rhyudek1
~ Github
  #4 (permalink)  
Antiguo 09/08/2010, 13:22
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, 10 meses
Puntos: 1517
Respuesta: Expresión regular

Se me olvidó lo del signo de ^
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #5 (permalink)  
Antiguo 09/08/2010, 13:26
Colaborador
 
Fecha de Ingreso: octubre-2009
Ubicación: Tokyo - Japan !
Mensajes: 3.867
Antigüedad: 14 años, 6 meses
Puntos: 334
Respuesta: Expresión regular

ajajaja... es que luego de pelear miles de veces con ellas, termine entendiéndolas ..
__________________
More about me...
~ @rhyudek1
~ Github
  #6 (permalink)  
Antiguo 09/08/2010, 14:02
 
Fecha de Ingreso: febrero-2004
Mensajes: 1.987
Antigüedad: 20 años, 2 meses
Puntos: 22
Respuesta: Expresión regular

Gracias por la ayuda.

No deseo ARRAY, deseo/requiero la REGEX.

Donde me pierdo???

Esto no me devuelve lo esperado...

Código PHP:
echo preg_replace('/^(.+\.){1}/i','','algo-z.algo-1.algo-2.algo-3.algo-4.algo-5'); 
Esto tampoco:

Código PHP:
echo preg_replace('/(^.+\.){1}/i','','algo-z.algo-1.algo-2.algo-3.algo-4.algo-5'); 
Donde estoy mal?

Última edición por Anarko; 09/08/2010 a las 14:04 Razón: EXP
  #7 (permalink)  
Antiguo 09/08/2010, 14:05
Colaborador
 
Fecha de Ingreso: octubre-2009
Ubicación: Tokyo - Japan !
Mensajes: 3.867
Antigüedad: 14 años, 6 meses
Puntos: 334
Respuesta: Expresión regular

bueno estas mal en la codicia
quitale la codicia a la expresión con un signo ? para que funcione

Código PHP:
Ver original
  1. echo preg_replace('/^(.+?\.){1}/i','','algoz.algo1.algo2.algo3.algo4.algo5');
__________________
More about me...
~ @rhyudek1
~ Github
  #8 (permalink)  
Antiguo 09/08/2010, 14:14
 
Fecha de Ingreso: febrero-2004
Mensajes: 1.987
Antigüedad: 20 años, 2 meses
Puntos: 22
Respuesta: Expresión regular

Me da piedra harta...

Funciona PERFECTO...

Es decir, jugue con el ? 3, 4 horas...

Danos info referente a EL.

Sabemso que hay 178 manuales en GOOGLE, pero dinos ALGO !!!...



Me da alegria extensa...

Ya puedo seguir con mi proyecto...



  #9 (permalink)  
Antiguo 09/08/2010, 14:41
Colaborador
 
Fecha de Ingreso: octubre-2009
Ubicación: Tokyo - Japan !
Mensajes: 3.867
Antigüedad: 14 años, 6 meses
Puntos: 334
Respuesta: Expresión regular

bueno es mas que nada para decirle como la palabra lo dice.. codicioso ser..
las expresiones de por si son codiciosas.. eso quiere decir que buscan el match mas grande posible
con el signo ? solo le quitas la codicia.. es como decirle que busque hasta el match mas corto posible

un ejemplo ..

Código PHP:
Ver original
  1. $string = "foo&bar&candy&mashmellow";
  2. // expresion codiciosa
  3. echo preg_replace("/^.*&/", "", $string); // resultado: mashmellow
  4.  
  5. echo "<br />";
  6. // expresion sin codicia
  7. echo preg_replace("/^.*?&/", "", $string); // resultado: bar&candy&mashmellow


tambien puedes quitarle la codicia por defecto a la expresion con el modificador U (Ungreedy)

Código PHP:
Ver original
  1. $string = "foo&bar&candy&mashmellow";
  2. // regex no codiciosa
  3. echo preg_replace("/^.*&/U", "", $string); // resultado: bar&candy&mashmellow

espero te aya servido de algo..
saludos..


PD: soy un pésimo profesor ;D
__________________
More about me...
~ @rhyudek1
~ Github
  #10 (permalink)  
Antiguo 09/08/2010, 15:55
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, 10 meses
Puntos: 1517
Respuesta: Expresión regular

Cita:
Iniciado por Hidek1 Ver Mensaje
PD: soy un pésimo profesor ;D
...


Son bromas

Te recomiendo que busques por greedy regex o ungreedy regex
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #11 (permalink)  
Antiguo 09/08/2010, 16:42
 
Fecha de Ingreso: febrero-2004
Mensajes: 1.987
Antigüedad: 20 años, 2 meses
Puntos: 22
Respuesta: Expresión regular

Abimael, Hideck1

GRACIAS !!!

...

Código PHP:
Veo que si remuevo los parentesis devuelve IDENTICO.
        echo 
preg_replace('/^.+?\.{1}/i','','as-p.as-p.as-p.as-p.as-p');;
Veo que si remuevo los corchetes devuelve IDENTICO.
        echo 
preg_replace('/^.+?\./i','','as-p.as-p.as-p.as-p.as-p');; 

Etiquetas: regular
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 00:07.