Foros del Web » Programando para Internet » PHP »

ayuda expresión regular

Estas en el tema de ayuda expresión regular en el foro de PHP en Foros del Web. Hola estoy intentado de una vez enteder y aprender definitivamente una cosa que siempre me ha dado mucha pereza (las "expresiones regulares") , pero que ...
  #1 (permalink)  
Antiguo 13/10/2009, 12:11
Avatar de Dundee  
Fecha de Ingreso: junio-2002
Ubicación: El Médano
Mensajes: 1.310
Antigüedad: 22 años, 5 meses
Puntos: 8
ayuda expresión regular

Hola estoy intentado de una vez enteder y aprender definitivamente una cosa que siempre me ha dado mucha pereza (las "expresiones regulares") , pero que me he dado cuenta que un buen manejo de estas es vital para poder desarrollar webs de calidad.

Estoy intentando comprender una expresión regular en concreto que no entiendo porque no se que utilidad tiene el símbolo # en concreto (pego el código):

$text=preg_replace('#[^-a-zA-Z0-9_]#', ' ',"el texto que sea pegado aquí");

He buscado preg_replace y parece que sustituye unos valores encontrados en una cadena por otro definido en el segúndo parámetro que se le pasa a la función (en este caso un espacio ' ' ). Lo que no entiendo son estas cosas:

1 el símbolo # al principio y al final

2 ¿es una negación, es decir dice que busque todo los caracteres menos los que muestra entre corchetes?.

Si alguien me puede referir una url donde se expliquen al detalle (Desde 0 a los más complicado ) las expresiones regulares estaría muy agradecido.
He encontrado muchas cosas en google pero que profundizaban muy poco.
Gracias de antemano.

Un saludo a tod@s
  #2 (permalink)  
Antiguo 13/10/2009, 12:36
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 10.106
Antigüedad: 16 años, 3 meses
Puntos: 2237
Respuesta: ayuda expresión regular

La almohadilla # es para delimitar, algunos prefieren usar diagonales: "/[^-a-zA-Z0-9_]/", el que se usa como negacion es el circunflejo ^

Mas info en [Aporte] Expresiones PCRE
__________________
- León, Guanajuato
- GV-Foto
  #3 (permalink)  
Antiguo 13/10/2009, 12:43
Avatar de Dundee  
Fecha de Ingreso: junio-2002
Ubicación: El Médano
Mensajes: 1.310
Antigüedad: 22 años, 5 meses
Puntos: 8
Respuesta: ayuda expresión regular

Cita:
Iniciado por Triby Ver Mensaje
La almohadilla # es para delimitar, algunos prefieren usar diagonales: "/[^-a-zA-Z0-9_]/", el que se usa como negacion es el circunflejo ^

Mas info en [Aporte] Expresiones PCRE
Gracias por la respuestas pero yo había entendido hasta ahora que el ^ era para decir que la expresión regular empieza por , es decir ^code(a-b)*$ por ejemplo esto según entiendo repite 0 o mas veces las letras de la a a la b comenzando desde el princio marcado por ^ (en este caso empezaría con code) y el final por $, ¿no es así?-.

Mil gracias
  #4 (permalink)  
Antiguo 13/10/2009, 13:24
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 15 años, 5 meses
Puntos: 1517
Respuesta: ayuda expresión regular

En el caso que este encerrado entre los corchetes [^] quiere decir que no sea igual a los caracteres que esten ahi dentro. Tambien el ^ significa principio si no lo usas entre los corchetes.
__________________
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 13/10/2009, 14:52
Avatar de Dundee  
Fecha de Ingreso: junio-2002
Ubicación: El Médano
Mensajes: 1.310
Antigüedad: 22 años, 5 meses
Puntos: 8
Respuesta: ayuda expresión regular

Cita:
Iniciado por abimaelrc Ver Mensaje
En el caso que este encerrado entre los corchetes [^] quiere decir que no sea igual a los caracteres que esten ahi dentro. Tambien el ^ significa principio si no lo usas entre los corchetes.
Ahora me ha quedado claro, mil gracias.
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 22:02.