[Rio-pm] range de números em regexp
Robson Mothé
rmothe em gmail.com
Quarta Junho 7 13:54:19 PDT 2006
Hum...
Só hoje que eu ví essa mensagem!
Que tal tentar:
$numero = 6;
($numero =~ m![5-9]!)?(print "achei!\n"):(print "babou!\n");
ou
$numero = "Eu tenho 25 anos";
($numero =~ m![10-30]!)?(print "achei!\n"):(print "babou!\n");
Perl trabalha de duas maneiras com o átomo dentro do "[]", vale para uma
interseção de valores dentro da tabela ASC ou para uma interseção de
valores:
abcdef = [a-f];
abcdefABCDEF = [a-fA-F];
10,11,12,13...30 = [10-30].
Testem aí depois me falem!
Um forte abraço,
Robson
--
Robson Mothé
rmothe em gmail.com
mothe em rio.pm.org
GNU/Linux User #318909
Em 01/06/06, Breno G. de Oliveira <breno em clavis.com.br> escreveu:
>
> Pessoal,
>
> recentemente um amigo meu me apresentou o seguinte problema:
>
> "como fazer uma ER que só case se encontrar um número dentro de um
> intervalo/alcance/range qualquer?"
>
> Bem - disse eu -, para fazer isso com números entre 0 e 9 é
> relativamente fácil. Para buscar, por exemplo, por números entre 5 e 8,
> poderíamos usar:
>
> /[5678]/
>
> Mas e quando queremos encontrar números com mais de um dígito?
>
>
> Eis, então, o problema: fazer uma ER que case SE E SOMENTE SE o valor
> estiver entre 16 e 34.
>
> Em Perl 6 é fácil (aí Fernando! ;P), partindo do princípio que o RFC 197
> foi respeitado, bastaria fazer:
>
> /(16,32)/
>
> mas e em Perl 5? Alguém se habilita?
>
> obs: não vale fazer /16|17|18|19|20|21|...|29|30|31|32/ =)
>
>
> []s
>
> breno
> _______________________________________________
> Rio-pm mailing list
> Rio-pm em pm.org
> http://mail.pm.org/mailman/listinfo/rio-pm
>
-------------- Próxima Parte ----------
Um anexo em HTML foi limpo...
URL: http://mail.pm.org/pipermail/rio-pm/attachments/20060607/f619f213/attachment.html
Mais detalhes sobre a lista de discussão Rio-pm