[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