[Rio-pm] range de números em regexp
Eduardo Maia
maia em suaweb.com
Sábado Junho 10 13:54:26 PDT 2006
Salve, salve!!!
Infelizmente não pude comparecer no último encontro social. Eu tava muito a fim de ir, meu pensamento tava lá com vocês, pena que ele não ficou bêbado, e nem conversou com ninguém que tava lá. E aí, Camila dormiu na mesa de novo?! :)
Robson pagou mico em regexp?! Hehehehe!
Não gostei da solução da Camila para a regexp do Breno, ela só sintetizou aquele monte de "ou" que o Breno comentou. Como assim ninguém dá uma solução bonita para essa questão?!
\D = Match qualquer caracter que não seja dígito
bash-3.00$ perl
$string="Tenho 100 anos";
if ($string =~ /\D[12][0-9]\D/) {
print "Possui número entre 10 e 29\n";
} else {
print "NAO possui numero entre 10 e 29\n";
}
NAO possui numero entre 10 e 29
bash-3.00$ perl
$string="Tenho 15 anos";
if ($string =~ /\D[12][0-9]\D/) {
print "Possui número entre 10 e 29\n";
} else {
print "NAO possui numero entre 10 e 29\n";
}
Possui número entre 10 e 29
bash-3.00$ perl
$string="Tenho 30 anos";
if ($string =~ /\D[12][0-9]\D/) {
print "Possui número entre 10 e 29\n";
} else {
print "NAO possui numero entre 10 e 29\n";
}
NAO possui numero entre 10 e 29
bash-3.00$ perl
$string="Tenho 10 anos";
if ($string =~ /\D[12][0-9]\D/) {
print "Possui número entre 10 e 29\n";
} else {
print "NAO possui numero entre 10 e 29\n";
}
Possui número entre 10 e 29
bash-3.00$ perl
$string="Tenho 20 anos";
if ($string =~ /\D[12][0-9]\D/) {
print "Possui número entre 10 e 29\n";
} else {
print "NAO possui numero entre 10 e 29\n";
}
Possui número entre 10 e 29
bash-3.00$ perl
$string="Tenho 120 anos";
if ($string =~ /\D[12][0-9]\D/) {
print "Possui número entre 10 e 29\n";
} else {
print "NAO possui numero entre 10 e 29\n";
}
NAO possui numero entre 10 e 29
bash-3.00$
Se a gente quiser considerar que "Tenho 3130 anos" match 13, é só tirar o \D:
bash-3.00$ perl
$string="Tenho 3130 anos";
if ($string =~ /[12][0-9]/) {
print "Possui número entre 10 e 29\n";
} else {
print "NAO possui numero entre 10 e 29\n";
}
Possui número entre 10 e 29
bash-3.00$ perl
$string="Tenho 3130 anos";
if ($string =~ /\D[12][0-9]\D/) {
print "Possui número entre 10 e 29\n";
} else {
print "NAO possui numero entre 10 e 29\n";
}
NAO possui numero entre 10 e 29
Abraços!
Mais detalhes sobre a lista de discussão Rio-pm