[Rio-pm] Expressão Regular m//

Gabriel Vieira gabriel.vieira em gmail.com
Domingo Dezembro 2 10:36:04 PST 2007


Bom, o resultado final deve ser o mesmo, podendo alterar o codigo. Ou
seja, você usa a variavel que quiser mas com o OUTPUT nao alterado.
Massss, se acham que nao vale, entao nao vale =D, apenas dei um
empurraozinho... o codigo eh de vcs.

On Dec 2, 2007 2:28 PM, Fernando Oliveira <fernandocorrea em gmail.com> wrote:
> Não... não vale não!!! a primeira linha era constante... não se pode tocar
> nela!!! quem grita golf faz as regras!!!
> senão eu poderia ignorar q a saida tem q ser "apareceu N vezes e botar só
> <code>print s/feliz//g</code> isso não vale!
> Inclusive, eu acho q seria uma boa ter no site as regras do golf! o q vcs
> acham?!
>
>
>
> Em 02/12/07, Gabriel Vieira < gabriel.vieira em gmail.com> escreveu:
> > haha, 2o tempo!! =P
> >
> > Bom, foi mistura do teu codigo com o do Bablos =D e se tratando de
> > Perl Golf, vale! =D hahaha
> >
> > Abraços ;D
> >
> > On Dec 2, 2007 2:08 PM, Fernando Oliveira <fernandocorrea em gmail.com>
> wrote:
> > > Como assim?! não pode mudar a regra no meio do jogo!!!
> > >
> > > Em 02/12/07, Gabriel Vieira <gabriel.vieira em gmail.com > escreveu:
> > >
> > > > Pra facilitar pro Fernando
> > > > Supondo que:
> > > > $_="Estou feliz, passei em Matematica Discreta I, feliz!";
> > > >
> > > > <code>
> > > > print"apareceu ",s/feliz//g," vezes..."
> > > > </code>
> > > >
> > > > On Dec 1, 2007 11:52 PM, Fernando Oliveira < fernandocorrea em gmail.com
> >
> > > wrote:
> > > > > Desculpem!!! era golf?! eu não sabia!!!
> > > > > Minha tacada!
> > > > >
> > > > > (ao invés de um perl -e, estou usando um perl -le...)
> > > > > <code>
> > > > > print"apareceu ",$string=~s/feliz//g," vezes..."'
> > > > > </code>
> > > > >
> > > > >
> > > > >
> > > > > Em 01/12/07, Blabos de Blebe < blabos em gmail.com> escreveu:
> > > > > > Concordo.
> > > > > >
> > > > > > Eng de Software deve vir em primeiro lugar, não por mim, mas por
> quem
> > > vai
> > > > > > dar manutenção no meu código depois, que poderá me chamar de
> elegante
> > > > > > ou porco, conforme o caso.
> > > > > >
> > > > > > Em produção eu preferiria a versão da FAQ, que aliás também é
> pequena
> > > e
> > > > > > por 3 caracteres não empatou com a minha:
> > > > > >
> > > > > > <code>
> > > > > > $_="Estou feliz, passei em Matematica Discreta I, feliz!";
> > > > > > $c++while/feliz/g;print"Apareceu $c vezes...\n"
> > > > > > </code>
> > > > > >
> > > > > >
> > > > > >
> > > > > >
> > > > > >
> > > > > >
> > > > > > On Dec 1, 2007 11:02 PM, Marco A P D'Andrade <mdacwb em gmail.com >
> > > wrote:
> > > > > >
> > > > > > > Gabriel,
> > > > > > >
> > > > > > > Bem, já deu pra perceber que existe mais de uma maneira de se
> fazer
> > > > > > > algo, e o pessoal se empolga em descobrir alternativas.
> > > > > > >
> > > > > > > Mas lembre-se de se concentrar em qualquer uma que seja legível
> para
> > > > > > > vc, e resolva o seu problema.
> > > > > > >
> > > > > > > Após algum tempo aprendendo as varias alternativas será
> interessante
> > > > > > > se concentrar nas versões mais legiveis, pois versões de dificil
> > > > > > > interpretação tendem a dificultar qualquer manutenção futura (em
> > > > > > > termos de sistemas).
> > > > > > >
> > > > > > > Sds,
> > > > > > > Marco Antonio
> > > > > > >
> > > > > > >
> > > > > > >
> > > > > > >
> > > > > > > Em 01/12/07, Blabos de Blebe< blabos em gmail.com > escreveu:
> > > > > > > > Breno, digamos que ao inves de $string a variavel fosse $s, vc
> > > teria
> > > > > 48.
> > > > > > > >
> > > > > > > > Nesse caso eu apelaria para
> > > > > > > >
> > > > > > > > <code>
> > > > > > > > $_="Estou feliz, passei em Matematica Discreta I, feliz!";
> > > > > > > > $_=@_=/feliz/g;print"Apareceu $_ vezes...\n"
> > > > > > > > </code>
> > > > > > > >
> > > > > > > > E descartada a primeira linha, eu teria 44.
> > > > > > > > Tá valendo?
> > > > > > > >
> > > > > > > >
> > > > > > > >
> > > > > > > > On Dec 1, 2007 9:49 PM, breno < breno em rio.pm.org> wrote:
> > > > > > > >
> > > > > > > > > Pra golfe, realmente. Mas como resposta para a pergunta do
> > > Gabriel
> > > > > > > > > (que está aprendendo Perl ainda) acho que a melhor é a que
> está
> > > no
> > > > > > > > > próprio FAQ do Perl, parecida com a versão do Lorn:
> > > > > > > > >
> > > > > > > > > ------------------8<-----------------
> > > > > > > > >
> > > > > > > > > $cont++ while $string =~ /feliz/g;
> > > > > > > > >
> > > > > > > > > ------------------8<-----------------
> > > > > > > > >
> > > > > > > > > Agora, se estamos falando de golfe, aí vai a minha tacada!
> > > > > > > > >
> > > > > > > > > (supondo a linha anterior como: my $string = "Estou feliz,
> > > passei em
> > > > > > > > > Matematica Discreta I, feliz!";
> > > > > > > > > e a saida como tendo que ser "apareceu X vezes..." e quebrar
> > > linha
> > > > > no
> > > > > > > > final)
> > > > > > > > > $c=@b=$string=~/feliz/g;print"apareceu $c vezes...\n"
> > > > > > > > >
> > > > > > > > > 53 caracteres :-)
> > > > > > > > >
> > > > > > > > > obs: redução da versão do Fernando, que aparentemente
> esqueceu
> > > que a
> > > > > > > > > diferença entre o print e o printf é grande :-P
> > > > > > > > >
> > > > > > > > > []s
> > > > > > > > >
> > > > > > > > > -b
> > > > > > > > >
> > > > > > > > >
> > > > > > > > >
> > > > > > > > >
> > > > > > > > > On Dec 1, 2007 6:31 PM, Fernando Oliveira <
> > > > > fernandocorrea em gmail.com>
> > > > > > > > wrote:
> > > > > > > > > > sim...mas ainda tenho menos caracteres...
> > > > > > > > > >
> > > > > > > > > > Em 01/12/07, Blabos de Blebe < blabos em gmail.com> escreveu:
> > > > > > > > > > >
> > > > > > > > > > >
> > > > > > > > > > >
> > > > > > > > > > > Detalhe besta, como quase disse o fernando, m// no
> contexto
> > > de
> > > > > lista
> > > > > > > > > > retorna $1, $2, ..., $N,
> > > > > > > > > > > porém utilizando o modificador g, retorna todas as
> > > substrings
> > > > > que
> > > > > > > > > > combinaram. Depois é só
> > > > > > > > > > > contar o tamanho da lista.
> > > > > > > > > > >
> > > > > > > > > > > E, não, eu não sabia isso de cabeça, é que eu to nesse
> > > capítulo
> > > > > do
> > > > > > > > > > livro... :p
> > > > > > > > > > >
> > > > > > > > > > > O exemplo do livro diz algo parecido com
> > > > > > > > > > >
> > > > > > > > > > > <code>
> > > > > > > > > > >
> > > > > > > > > > > my $string = "Estou feliz, passei em Matematica Discreta
> I,
> > > > > feliz!";
> > > > > > > > > > > printf "Apareceu %s vezes...\n",
> $c=@b=$string=~/feliz/g;
> > > > > > > > > > >
> > > > > > > > > > > </code>
> > > > > > > > > > >
> > > > > > > > > > > Na verdade era mais pra <code> scalar( @b = $string =~
> > > /feliz/g
> > > > > );
> > > > > > > > > > </code>, que eu
> > > > > > > > > > > achei longo, mas mais legível.
> > > > > > > > > > >
> > > > > > > > > > > Espero ter ajudado
> > > > > > > > > > >
> > > > > > > > > > >
> > > > > > > > > > >
> > > > > > > > > > >
> > > > > > > > > > >
> > > > > > > > > > > On Dec 1, 2007 1:46 PM, Fernando Oliveira <
> > > > > fernandocorrea em gmail.com>
> > > > > > > > > > wrote:
> > > > > > > > > > >
> > > > > > > > > > > > o m//g em contexto de lista retorna uma lista com $1,
> $2,
> > > ...,
> > > > > $N.
> > > > > > > > Mas
> > > > > > > > > > em contexto estalar só retorna um booleano... uma solução
> com
> > > > > menor
> > > > > > > > > > performance, mas com menos caracteres q o for, seria:
> > > > > > > > > > > >
> > > > > > > > > > > > <code>
> > > > > > > > > > > >
> > > > > > > > > > > > my $string = "Estou feliz, passei em Matematica
> Discreta
> > > I,
> > > > > feliz!";
> > > > > > > > > > > > printf "Apareceu %s vezes...\n", scalar($string =~
> > > > > s/(feliz)/$1/g);
> > > > > > > > > > > > </code>
> > > > > > > > > > > >
> > > > > > > > > > > >
> > > > > > > > > > > > Em 01/12/07, Marco A P D'Andrade < mdacwb em gmail.com >
> > > > > escreveu:
> > > > > > > > > > > >
> > > > > > > > > > > >
> > > > > > > > > > > >
> > > > > > > > > > > > > Hummm...
> > > > > > > > > > > > >
> > > > > > > > > > > > > Posso estar enganado, mas acho que existem mais
> > > nuancias...
> > > > > > > > > > > > > (daqui não tenho como testar, e quero dar meu pitaco
> ;)
> > > )
> > > > > > > > > > > > >
> > > > > > > > > > > > > Reforçando o contexto scalar da regex, com o
> argumento
> > > "g"
> > > > > já é
> > > > > > > > feita
> > > > > > > > > > > > > a pesquisa completa.
> > > > > > > > > > > > >
> > > > > > > > > > > > > my $string = 'Estou feliz, passei em Matematica
> Discreta
> > > I,
> > > > > > > > feliz!';
> > > > > > > > > > > > > printf "Apareceu %s vezes...\n", scalar($string =~
> > > > > m/feliz/g);
> > > > > > > > > > > > >
> > > > > > > > > > > > > Se fosse utilizado um foreach, em vez do while eu
> não
> > > teria
> > > > > tanta
> > > > > > > > > > > > > dúvida sobre o loop, pois seriam avaliados todos os
> > > > > elementos
> > > > > > > > > > > > > retornados, já o while, não sei se na proxima
> interação
> > > ele
> > > > > refará
> > > > > > > > a
> > > > > > > > > > > > > pesquisa...
> > > > > > > > > > > > >
> > > > > > > > > > > > > Ok... devia ter testado, mas queria dar o pitaco ;)
> > > > > > > > > > > > >
> > > > > > > > > > > > > Sds,
> > > > > > > > > > > > > Marco Antonio
> > > > > > > > > > > > >
> > > > > > > > > > > > > Em 01/12/07, Lorn< lorn.br em gmail.com> escreveu:
> > > > > > > > > > > > > > Você estava checando só uma vez :P precisa checar
> até
> > > > > acabar
> > > > > > > > toda a
> > > > > > > > > > frase :)
> > > > > > > > > > > > > >
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > use warnings;
> > > > > > > > > > > > > > use strict;
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > my $cont;
> > > > > > > > > > > > > > my $string = 'Estou feliz, passei em Matematica
> > > Discreta
> > > > > I,
> > > > > > > > feliz!';
> > > > > > > > > > > > > > &aparece($string);
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > sub aparece{
> > > > > > > > > > > > > >   my $frase = shift();
> > > > > > > > > > > > > >   while ($string =~ m/feliz/g){
> > > > > > > > > > > > > >     $cont++;
> > > > > > > > > > > > > >   };
> > > > > > > > > > > > > >   print "Feliz apareceu $cont vezes\n";
> > > > > > > > > > > > > > }
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > On Dec 1, 2007 11:41 AM, gabriel lima <
> > > > > > > > gabriellima333 em hotmail.com>
> > > > > > > > > > wrote:
> > > > > > > > > > > > > > >
> > > > > > > > > > > > > > >
> > > > > > > > > > > > > > > Olá pessoal tudo bem?
> > > > > > > > > > > > > > > Estava tentando criar uma sub-rotina simples
> apenas
> > > > > > > > > > > > > > > para estudo da linguagem Perl. Esta sub-rotina
> > > mostra
> > > > > > > > > > > > > > > quantas vezes uma palavra aparece em uma string.
> > > > > > > > > > > > > > > O problema é que ela só retorna 1, ou seja, fala
> que
> > > > > > > > > > > > > > > só acha esta palavra uma vez, mesmo tendo
> aparecido
> > > > > > > > > > > > > > > repetida vezes na string, veja:
> > > > > > > > > > > > > > >
> > > > > > > > > > > > > > > #! D:\Perl\bin\Perl.exe
> > > > > > > > > > > > > > >
> > > > > > > > > > > > > > > use warnings;
> > > > > > > > > > > > > > > use strict;
> > > > > > > > > > > > > > >
> > > > > > > > > > > > > > > my $cont;
> > > > > > > > > > > > > > > my $string = 'Estou feliz, passei em Matematica
> > > Discreta
> > > > > I,
> > > > > > > > > > feliz!';
> > > > > > > > > > > > > > > &aparece($string);
> > > > > > > > > > > > > > >
> > > > > > > > > > > > > > > sub aparece{
> > > > > > > > > > > > > > >   my $frase = shift();
> > > > > > > > > > > > > > >   $cont++ if $string =~ m/feliz/;
> > > > > > > > > > > > > > >   print "Feliz apareceu $cont vezes\n";
> > > > > > > > > > > > > > > }
> > > > > > > > > > > > > > >
> > > > > > > > > > > > > > > Saída -> Feliz apareceu 1 vezes
> > > > > > > > > > > > > > >
> > > > > > > > > > > > > > > ________________________________
> > > > > > > > > > > > > > Receba as últimas notícias do Brasil e do mundo
> direto
> > > no
> > > > > seu
> > > > > > > > > > Messenger! É
> > > > > > > > > > > > > > GRÁTIS! Assine já!
> > > > > > > > > > > > > > >
> > > > > > > > _______________________________________________
> > > > > > > > > > > > > > > Rio-pm mailing list
> > > > > > > > > > > > > > > Rio-pm em pm.org
> > > > > > > > > > > > > > > http://mail.pm.org/mailman/listinfo/rio-pm
> > > > > > > > > > > > > > >
> > > > > > > > > > > > > >
> > > > > > > > > > > > > >
> > > > > > > > > > > > > >
> > > > > > > > > > > > > > --
> > > > > > > > > > > > > > Lindolfo "Lorn" Rodrigues
> > > > > > > > > > > > > > - www.slackwarezine.com.br
> > > > > > > > > > > > > > - http://lornlab.org
> > > > > > > > > > > > > > - http://sao-paulo.pm.org
> > > > > > > > > > > > > > use Catalyst;
> > > > > > > > > > > > > > _______________________________________________
> > > > > > > > > > > > > > Rio-pm mailing list
> > > > > > > > > > > > > > Rio-pm em pm.org
> > > > > > > > > > > > > > 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
> > > > > > > > > > > > >
> > > > > > > > > > > >
> > > > > > > > > > > >
> > > > > > > > > > > >
> > > > > > > > > > > > --
> > > > > > > > > > > > []'s Fernando
> > > > > > > > > > > > _______________________________________________
> > > > > > > > > > > > Rio-pm mailing list
> > > > > > > > > > > > Rio-pm em pm.org
> > > > > > > > > > > > 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
> > > > > > > > > > >
> > > > > > > > > >
> > > > > > > > > >
> > > > > > > > > >
> > > > > > > > > > --
> > > > > > > > > > []'s Fernando
> > > > > > > > > > _______________________________________________
> > > > > > > > >
> > > > > > > > >
> > > > > > > > >
> > > > > > > > > > Rio-pm mailing list
> > > > > > > > > > Rio-pm em pm.org
> > > > > > > > > > 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
> > > > > > > > >
> > > > > > > >
> > > > > > > >
> > > > > > > > _______________________________________________
> > > > > > > > Rio-pm mailing list
> > > > > > > > Rio-pm em pm.org
> > > > > > > > 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
> > > > > > >
> > > > > >
> > > > > >
> > > > > > _______________________________________________
> > > > > > Rio-pm mailing list
> > > > > > Rio-pm em pm.org
> > > > > > http://mail.pm.org/mailman/listinfo/rio-pm
> > > > > >
> > > > >
> > > > >
> > > > >
> > > > > --
> > > > > []'s Fernando
> > > > > _______________________________________________
> > > > > Rio-pm mailing list
> > > > > Rio-pm em pm.org
> > > > > http://mail.pm.org/mailman/listinfo/rio-pm
> > > > >
> > > >
> > > >
> > > >
> > > > --
> > > > Gabriel Vieira
> > > > _______________________________________________
> > > > Rio-pm mailing list
> > > > Rio-pm em pm.org
> > > > http://mail.pm.org/mailman/listinfo/rio-pm
> > > >
> > >
> > >
> > >
> > > --
> > > []'s Fernando
> > > _______________________________________________
> > > Rio-pm mailing list
> > > Rio-pm em pm.org
> > > http://mail.pm.org/mailman/listinfo/rio-pm
> > >
> >
> >
> >
> > --
> > Gabriel Vieira
> > _______________________________________________
> > Rio-pm mailing list
> > Rio-pm em pm.org
> > http://mail.pm.org/mailman/listinfo/rio-pm
> >
>
>
>
> --
> []'s Fernando
> _______________________________________________
> Rio-pm mailing list
> Rio-pm em pm.org
> http://mail.pm.org/mailman/listinfo/rio-pm
>



-- 
Gabriel Vieira


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