Perl - Expresion Regular

 
Vista:
sin imagen de perfil

Expresion Regular

Publicado por Leonardo (5 intervenciones) el 25/07/2008 16:39:10
Buenos días:

Soy un novato en esto de las expresiones regulares y quisiera ver si me pueden ayudar a formar una expresión regular que cumpla con las siguientes especificaciones:

-> Su longitud debe ser de al menos un caracter y máximo dos:
-> puede aceptar números entre 1 y 25 o el número 99

Saludos
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de ScriptShow

RE:Expresion Regular

Publicado por ScriptShow (2 intervenciones) el 18/08/2008 10:21:26
Saludos Leonardo,

lo que tú apuntas es más bien "Estructuras de control" y/o "Operadores de comparación", veamos:

> ó gt Mayor que
< ó lt Menor que
== ó eq Igual a
<= ó le Menor o igual a
>= ó ge Mayor o igual a
!= ó ne Distinto a
<=> Retorno de comparacion (devuelve -1, 0, 1) según.

Un sencillo ejemplo:

#!/usr/bin/perl

if ( $num>=1 && $num<=25 || $num==99) {print "El numero $num es correcto";}
else {print "El numero $num es incorrecto";}

Espero te sea útil.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

RE:Expresion Regular

Publicado por Leonardo (5 intervenciones) el 21/08/2008 21:51:31
Muchas gracias por la ayuda... por supuesto que sabía que la validación la podías hacer utilizando if y comparaciónes lógicas, pero ese no era el punto... lo que necesitaba era validar los datos con una expresión regular.

Después de varios intentos finalmente conseguí generar una exp. Regular para validarla... creo que me sobran algunos paréntesis, pero la validación es correcta... La dejo aquí por si a alguien más le puede servir.

Lo que tuve que hacer fue hacer la validación por partes...

([1-9]{1}) -> valida del 1 al 9
(([0-1]{1})([0-9]{1})) -> valida del 01 al 19
([2]{1})([0-5]{1}) -> valida del 20 al 25
([9]{1})([9]{1}) -> valida el 99

La expresión final resultante quedó así:

^((((([0-1]{1})([0-9]{1}))|([2]{1})([0-5]{1})|([9]{1})([9]{1})){1,2})|(([1-9]{1})))$

Bastante compleja, pero funciona!!!.

Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de ScriptShow

RE:Expresion Regular

Publicado por ScriptShow (2 intervenciones) el 21/08/2008 23:00:20
Gracias por compartir el código.

Disculpa por no haber entendido correctamente lo que planteabas.

Un saludo.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Expresion Regular

Publicado por Joaquín (13 intervenciones) el 12/09/2008 16:44:05
Se podría hacer así...

my $es_valido;
$numero =~ m/(d{1,2})(?{ $es_valido = (($^N >= 1 and $^N <= 25) or $^N == 99) })/;
if ( $es_valido ) {
print "El número $numero es válido ";
}
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar