Datos del Archivo
- Autor/es: Arias
- Fecha de alta: 12-03-2005
- Descargas: 7247
Votación
No estás registrado
Descarga

(29,56 KB)
Otras versiones
No hay
Manual de Expresiones Regulares v1
(4,67 en 3 votaciones )
En este manual intento explicar el funcionamiento y la construcción de una expresión regular desde lo mas básico, aun así si nunca has trabajado con expresiones regulares puede que te resulte dificil familiarizarte con ellas.
Leer el documento pausadamente, probad las cosas y sobre todo: probad cosas diferentes. Si no entendeis una parte del documento, no avanceis, la dificultad es creciente, releerlo y si teneis dudas preguntar en el canal.
Características de esta versión:
Esta información no se encuentra disponible en este momento
Comentarios (3)
|
#1
Arias 28 mar 05 (15:38) La expresión regular de detectar que fui mareando por todo el documento podria mejorarse aun un pokito mas... Al final llegamos a esta expresion regular: "(\"|\').*?(?<!\\\\)\1"... Si tubieramos por ejemplo que detectar la cadena "Hola \\" (dos barras dentro de la cadena) no funcionaria bien, porke no considera que la barra esta escapada...
La solución a este problema no es trivial... Si no ponemos a pensar: una barra sola si escapa las comillas; dos barras no excapan las comillas; tres barras si espacan las comillas; cuatro no; cinco si... Depende del numero de barras que tengamos las comillas estan escapadas o no, por ejemplo "Hola \\\\\" si estaria escapada la cadena mientras que "Hola \\\\\\" no... Viendo los número es facil darse cuenta de que cuando el numero de barras es par, las comillas no estan escapadas y si cuando son impares. Pero como podemos detectar esto con una expresión regular? La cosa es bastante sencilla: solo tenemos que añadir delante de la asercion lookbehind dos barras cuantificadas con *, asi siempre buscariamos una comilla que no tubiera una barra y una sucesion par de barras invertidas detras... La expresión regular final seria: "(\"|\').*?(?<!\\\\)(?:\\\\\\\\)?\1" |
|
#2
broken 05 dic 06 (04:34) Exelente, siempre Arias aportando sus conosimientos para ayudarnos a mejorar nuestros Script y porque no nuestra sabiduria =)
|
|
#3
Arias 18 feb 07 (13:11) Puse cuantificadas con * y luego voy y escribo un ? xDD
La regex de verdad seria: "(\"|\').*?(?<!\\\\)(?:\\\\\\\\)*\1" |
Para poder participar debes estar registrado e identificado. Si no estás registrado como usuario de PHP-Hispano,
:: Registrar ::