[Rio-pm] range de números em regexp

Fernando fernandocorrea em gmail.com
Quarta Junho 7 14:41:59 PDT 2006


Robson Mothé wrote:

> 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 <mailto:rmothe em gmail.com>
> mothe em rio.pm.org <mailto:mothe em rio.pm.org>
> GNU/Linux User #318909
>
>
>
> Em 01/06/06, *Breno G. de Oliveira* <breno em clavis.com.br
> <mailto: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 <mailto:Rio-pm em pm.org>
>     http://mail.pm.org/mailman/listinfo/rio-pm
>     <http://mail.pm.org/mailman/listinfo/rio-pm>
>
>
>
>------------------------------------------------------------------------
>
>_______________________________________________
>Rio-pm mailing list
>Rio-pm em pm.org
>http://mail.pm.org/mailman/listinfo/rio-pm
>
fernando em ubuntu:~$ perl -e '$numero = "Eu tenho 61 anos";
($numero =~ m![25-60]!)?(print "achei!\n"):(print "babou!\n");'
achei!
fernando em ubuntu:~$


Mais detalhes sobre a lista de discussão Rio-pm