Qué es Gulcas?
La lista de correo
Normas de uso
Fotos
Wiki
Hackit
Expressions regulars en grep
Enviado por melkor.kp el Mié, 2006-11-08 10:56.
He estat buscant una expressió regular amb el grep per a comprobar
si una ip es correcta. Al final m'he decidit per la següent.
echo 127.0.0.1 | grep '^[0-9]\{1,3\}[.][0-9]\{1,3\}[.][0-9]\{1,3\}[.][0-9]\{1,3\}$'de trobar 1 punt.
Si algú se li ocorre alguna opció més eficient per a comprobar IPs, jo he elegit
aquesta perque és pràctica encara que no és del tot correcta, ja que no pot haver un 9 a principi
de línia.
- melkor.kp's blog
- Inicie sesión o regístrese para enviar comentarios


Una vuelta de tuerca
Con esto no dejas pasar valores superiores a 299 pero lo suyo seria 255.
echo 127.0.0.1 | \ grep '^[0-2][0-9]\{0,2\}[\.][0-2][0-9]\{0,2\}[\.][0-2][0-9]\{0,2\}[\.][0-2][0-9]\{0,2\}$'No dejan de sorprenderme
Bueno, creo que esto es exactamente lo que buscas.
Metes el rango de ips, en este caso 0.0.0.0/255.255.255.255 (todas las posibles) y le das al boton de generar expresiones regulares, mas facil imposible.
Lo dicho, la gente de Google no deja de sorprenderme.
regexps
Melkor, la teua regexp més que per a IP's es per a quatre números separats per punts :P
Gastant el programeta que comenta arrase eix:
que es pot simplificar a:
^(([0-9]|[1-9][0-9]|1([0-9][0-9])|2([0-4][0-9]|5[0-5]))\.){3} ([0-9]|[1-9][0-9]|1([0-9][0-9])|2([0-4][0-9]|5[0-5]))$+ simplificat
Com a passatemps he simplificat un poc més, com se pot vore s'ha quedat en 103 caracters, inicialment tenia 220.
jack$ echo -n '^(((([1-9]|1[0-9])?[0-9])|(2([0-4][0-9]|5[0-5])))\.){3} ((([1-9]|1[0-9])?[0-9])|(2([0-4][0-9]|5[0-5])))$'|wc -c 103Si algú ho consegueix amb menys caracters que responga a este post amb la solució... jo crec que no es podrà simplificar més.
Com a curiositat, mirant el códic font de la web que genera les regexp's se pot vore com ho fa gastant javascript (buscar les funcions IP, IPAll e IPGen).