1 de septiembre de 2008
1 de julio de 2008
Expresiones Regulares - Aprendiendo con ejemplos
Direcciones IP {Corregido}
(^(2([0-4][0-9])|2(5[0-5]))|^([0-1]?[0-9]?[0-9]))\.(((2([0-4][0-9])|2(5[0-5]))|([0-1]?[0-9]?[0-9]))\.){2}((2([0-4][0-9])|2(5[0-5]))|([0-1]?[0-9]?[0-9]))$
Análisis:
- (^(2([0-4][0-9])|2(5[0-5]))|^([0-1]?[0-9]?[0-9]))\. : Inicio de cadena (^), un número x que cumpla con: x >= 200 y x <= 249 (2([0-4][0-9]), ó cumpla con: x >= 250 y x <= 255 (2(5[0-5])), ó cumpla con x >= 0 y x <= 199 (([0-1]?[0-9]?[0-9])), seguido de un punto (\.)
- (((2([0-4][0-9])|2(5[0-5]))|([0-1]?[0-9]?[0-9]))\.){2} : lo mismo que el término anterior pero repetido exactamente 2 veces ({2})
- ((2([0-4][0-9])|2(5[0-5]))|([0-1]?[0-9]?[0-9]))$ : lo mismo que el primer término, pero en lugar de estar seguido de un punto, el número debe estar seguido del final de la cadena ($)
Casos de prueba:
- 0.0.0.0
- 10.10.0.1
- 192.168.0.1
- 200.40.30.245
- 255.255.255.255
Número del documento de identidad (UY)
^\d\.\d{3}\.\d{3}-\d$Análisis:
- ^\d\. : Inicio de la cadena (^), un dígito (\d) y un punto (\.)
- \d{3}\. : 3 ocurrencias de dígito (\d{3}) y un punto (\.)
- \d{3} : 3 ocurrencias de dígito (\d{3})
- -\d$ : un guión (-), un dígito (\d) y final de la cadena($)
Casos de prueba:
- 1.234.567-8
Valida el formato, no la validez del número.
URI sin parámetros
^(http://)((\w+\.)?(\w+\.)?\w+\.(\w{2,3})(\.\w{2})?)(/(\w+)(/\w+)?(\.(\w{3,4}))?)?$Análisis:
- ^(http://) : Cadena http:// ubicada al inicio (^)
- ((\w+\.)?(\w+\.)?\w+\. : 0 ó 1 ocurrencias de una cadena de caracteres seguida por un punto ((\w+\.)?), 0 ó 1 ocurrencias de una cadena de caracteres seguida por un punto ((\w+\.)?) y una cadena de caracteres seguida por un punto(\w+\.)
- (\w{2,3}) : una cadena compuesta de 2 o 3 caracteres
- (\.\w{2})? : 0 ó 1 ocurrencia de un punto (\.) seguido de una cadena compuesta de 2 caracteres (\w{2}?)
- (/(\w+)(/\w+)?(\.(\w{3,4}))?)?$ : ésta parte de la cadena es opcional, por eso está encerrada entre paréntesis y seguida del indicador de 0 ó 1 ocurrencia (?). Las partes que forman la cadena opcional son: una barra (/), seguida de una cadena de carracteres (\w+), 0 ó 1 ocurrencia de una barra (/) seguida de una cadena de caracteres (\w+), 0 ó 1 ocurrencia de un punto (\.) seguido de una cadena de 3 ó 4 caracteres (\w{3,4}) y el final de la cadena ($)
Casos de prueba:
- http://www.google.com.uy
- http://google.com.uy
- http://mail.server.com.uy
- http://www.google.com.uy/index.html
- http://myserver.com.uy/contacto.htm
- http://mail.server.com.uy/contacto/send.php
- http://www.picandocodigo.net
- http://www.picandocodigo.net/foro
URI con parámetros
^(http://)((\w+\.)?(\w+\.)?\w+\.(\w{2,3})(\.\w{2})?)((/(\w+/?)+(/?\w+)?((\.(\w{3,4})?))?)(\?(\w+=[\w\+\-]+)((&\w+=([\w\+\-]?)+)?)+)?)Análisis:
- ^(http://)((\w+\.)?(\w+\.)?\w+\.(\w{2,3})(\.\w{2})?)((/(\w+/?)+(/?\w+)?((\.(\w{3,4})?))?) : ídem anterior.
- (\?(\w+=[\w\+\-]+) : signo de interrogación (\?) seguido de una cadena de caracteres seguida del signo de igual(\w+=) seguido de una cadena de caracteres compuesta de 1 ó más ocurrencias de cualquier letra y/o los signos de + y - ([\w\+\-]+)
- ((&\w+=([\w\+\-]?)+)?)+)?) :1 o más ocurrencias de: signo separador de parámetros (&), una cadena de caracteres seguida del signo de igual (\w=) seguida de 0 ó 1 ocurrencia de una cadena de caracteres formada por cualquier letra y/o signos de + y - (([\w\+\-]?)+)
Casos de prueba:
- http://www.server.com.uy/index.html
- http://server.com.uy/contacto.htm
- http://mail.server.com.uy/contacto/send.php
- http://mail.server.com.uy/contacto/forms/scripts/send.php?m=value1&n=value2
- http://www.google.com/search
- http://www.google.com.uy/search?q=the+ninth+gate&hl=es
- http://www.google.com.uy/search?q=the+ninth+gate&meta=
Publicado a las
21:00
7
comentarios
Etiquetas: Programación, RegEx
25 de abril de 2008
Nueva Comunidad de Programadores

Picando Código estrenó foro, un foro que se inició con una invitación a 20 personas y que en aproximadamente 10 días ha demostrado que puede llegar a crecer como comunidad.
En estos pocos días ya se han planteado y resuelto dudas de programación y sistemas operativos, además se han iniciado intercambios de opiniones en el foro de flamewars... la verdad que se viene armando muy bien.
Link: http://foro.picandocodigo.net
Publicado a las
00:37
1 comentarios
Etiquetas: Programación, Sitios Web
14 de abril de 2008
Expresiones Regulares

Hace ya varios días que vengo realizando ciertas tareas en mi trabajo que me han hecho decir más de una vez "Que suerte que se inventaron las expresiones regulares".
La tarea se trataba, a grandes rasgos, de filtrar cadenas de caracteres que recibía desde un sistema y de acuerdo a ciertos parámetros, devolver un valor numérico... nada del otro mundo, sólo que éstas cadenas de caracteres no siempre eran iguales, sino que seguían ciertos patrones... razón de ser de las expresiones regulares.
Era una tarea que pude haber hecho con un conglomerado de if's o cases, pero utilizando las RegEx todo eso se redujo a 2 lineas de código por cada caso a filtrar y si bien eran bastante simples, creo que fue una buena manera de ver cómo te pueden salvar el día y a la vez ver que no hay que tenerles miedo, mucha gente piensa que son un monstruo indomable.
En mi caso no utilicé nada complejo, y dejo una pequeña referencia que para empezar es más que suficiente.
- ^ - Comienzo de la cadena
- $ - Fin de la cadena
- [tk7] - Cualquiera de los caracteres t, k ó 7
- [^tk7] - Cualquier caracter excepto t, k ó 7
- [0-9] - Caracteres numéricos comprendidos entre 0 y 9
- \ - Caracter de escape, se utiliza en conjunto para indicar un caracter especial como parte de la expresión. Por ejemplo \. significa que se busca el caracter . (punto).
- . - Cualquier caracter, una sola ocurrencia
- + - Una o más ocurrencias del caracter que le precede
- ? - Cero o más ocurrencias del caracter que le precede
En wikipedia hay un buen artículo introductorio y recomiendo las herramientas RegEx Pal y RegExr para ir probando sus propias expresiones.
Un ejemplo simple sería una dirección de email:
^((\w|\.){2,}@)\w{3,}\.\w{2,3}((\.(\w{2}))?)?$La expresión regular anterior presenta una forma muy simple de validar direcciones de email, aunque no es la más completa, permite validar una dirección sin entrar en detalles, permitiendo validar direcciones compuestas de
(3 o más caracteres alfanuméricos ó puntos)@(3 omás caracteres alfanuméricos).(2 o 3 caracteres alfanuméricos)(cero o una ocurrencia de (.(2 caracteres alfanuméricos)))
Yo no soy ningún experto en este campo, pero reconozco el poder que tienen y es uno de los temas que me gustaría dominar.
Publicado a las
19:10
0
comentarios
Etiquetas: Programación, RegEx
16 de junio de 2006
Felíz Cumpleaños a php

Más vale tarde que nunca, ¿cómo omitir tal evento?
php cumplió 10 11 años desde la aparición de la versión 1 el 8 de junio de 1996 1995.
En éstos 10 11 años, php se ha impuesto en el mundo de las aplicaciones web, permitiendo así grandes avances en éste campo.
Via: Microsiervos
Corrección: Me lié bastante con las fechas, pero gracias al comentario de
wicho, (a quien agradezco la corrección), he podido corregir este error. La verdad es que no se por qué motivo llegué a más de un enlace respecto a los 10 años de php, por lo que asumí que fue este año... supongo que eso me enseña a no precipitarme a publicar sin corroborar. Además de que en la anotación que tomé como fuente estaba la fecha...
Publicado a las
22:05
1 comentarios
Etiquetas: Programación













