Expresión regular
Publicado por iGNASI85 (3 intervenciones) el 05/12/2006 19:41:14
Buenas, tengo una duda a la hora de tratar una expresión regular.
El 4 argumento de mi programa en perl es una cadena como esta--> 1:2:3
Donde el mínimo de esta cadena es un número cualquiera de 1 a 11 y el máximo es que sean los 11 números, es decir:
1:2:3:4:5:6:7:8:9:10:11
Donde el orden no importa.
Para tratar esta expresión regular uso:
if($ARGV[4]=~ m/((\d{1,2})(\:)(\d{1,2}))*/){
print "$1\t$2\t$3\t$4\t$5\n";
}else {
print "Argumentos mal introducidos\n";
}
En principio pongo el * a final del matching para indicar que puede que haya 0 o más cadenas del tipo num:num. Al imprimir los argumentos $5 y posteriores para una entrada del tipo (1:2:3:4:5:6:7:8:9:10:11), no me imprime nada, están vacíos... solo me coge expresiones de tipo num:num.
Alguna idea?
Muchas gracias
El 4 argumento de mi programa en perl es una cadena como esta--> 1:2:3
Donde el mínimo de esta cadena es un número cualquiera de 1 a 11 y el máximo es que sean los 11 números, es decir:
1:2:3:4:5:6:7:8:9:10:11
Donde el orden no importa.
Para tratar esta expresión regular uso:
if($ARGV[4]=~ m/((\d{1,2})(\:)(\d{1,2}))*/){
print "$1\t$2\t$3\t$4\t$5\n";
}else {
print "Argumentos mal introducidos\n";
}
En principio pongo el * a final del matching para indicar que puede que haya 0 o más cadenas del tipo num:num. Al imprimir los argumentos $5 y posteriores para una entrada del tipo (1:2:3:4:5:6:7:8:9:10:11), no me imprime nada, están vacíos... solo me coge expresiones de tipo num:num.
Alguna idea?
Muchas gracias
Valora esta pregunta


0