[SP-pm] Duvida sobre regex

henrique juhenrimas em yahoo.com.br
Quinta Junho 1 11:12:35 PDT 2006


humm, realmente, o perl -pe não funcionou mesmo... vou tentar fazer essa idéia 
de tratar a mensagem inteira como uma grande e "enolme" linha...

é que estou estou firmemente (decidido|querendo|tentando|precisando) fazer um 
wrapper para limpar  mensagens de email que chegam via pop e contenham links 
para arquivos não muito honestos. A maioria dos links sao bloqueados no 
proxy, mas mesmo assim, queria incrementar  o índice de acertos.
até instalei o p3scan aqui, e integrei-o com um antivírus, se alguém manda um 
arquivo infectado, ele educada e transparentemente intercepta e nega o 
recebimento da mensagem. 
Ele (o p3scan) tem uma opção que integra o p3mail, que era um wrapper de html, 
que retira(va) todo o html da página, mas por corromper alguns arquivos 
legitímos e não tão somente html, foi descontinuado e retirado do ar. 

As minhas pretensões são mais humildes, eu só pretendo retirar links que 
contenham algumas extensões não-tão-úteis. Já obtive algum sucesso limpando 
urls que estejam na mesma linha, mas não funciona a contento quando a url 
sofre uma quebra de linha. 

por exemplo, um trecho de uma das mensagens em que eu estou "treinando" :
============inicio==============
> Mas o meu já está assim hoje. Funcionar funciona, o problema é que
> não bloqueia o link que eu passei. Teste o link abaixo para você
> ver:
>
> http://www.mikes.educv.ro/albums/cartao.scr?4d325356ae47122a6e7b8f1f07cae26d
>
> []´s
>
> Fulanoxxx 
>
-----BEGIN PGP SIGNED MESSAGE----- <br>
Hash: SHA1 <br>
&nbsp;<br>
Realmente, este link ele n&atilde;o bloqueou...<br>
Se eu tiro o que vem depois do "?" ele funciona...<br>
<br>
gostaria ent&atilde;o tamb&eacute;m de saber uma solu&ccedil;&atilde;o<br>
<br>
<br>
Atenciosamente,<br>
<br>
<br>
<br>
Fulano xxx escreveu:<br>
<span style=3D"white-space: pre;">&gt; Mas o meu j&aacute; est&aacute; assi=
m hoje.
Funcionar funciona, o problema &eacute; que<br>
&gt; n&atilde;o bloqueia o link que eu passei. Teste o link abaixo para voc=
&ecirc;<br>
&gt; ver:<br>
&gt; <br>
&gt;
<a class=3D"moz-txt-link-freetext" href=3D"http://www.mikes.educv.ro/albums=
/cartao.scr?4d325356ae47122a6e7b8f1f07cae26d">http://www.mikes.educv.ro/alb=
ums/cartao.scr?4d325356ae47122a6e7b8f1f07cae26d</a><br>
&gt; <br>
&gt; <br>


acho que é isso..rs.. de volta a prancheta 
( tô me sentindo o próprio coiote usando aquelas engenhocas da ACME pra pegar 
o papaleguas..rs)

[ ]s, Henry



Em Qui 01 Jun 2006 14:42, Wendel Scardua escreveu:
> Gente, acho que não é \n entre os a's e os b's ... mas parece ter
> sempre um "=" fazendo papel de hífen. Ele quer casar:
> aaabbb
> ou
> aaab=
> bb
> # notem que a linha de cima tem um "b" !
>
> Agora, perl -pe não vai dar conta do recado [ao menos não do jeito que
> o autor da pergunta espera]: a expressão é executada para cada linha,
> e quando estiver na linha "aaab=" não dá pra ver a linha seguinte.
>
> O jeito mais simples é fazer um script completo:
> undef $/;
> ler o arquivo inteiro pra uma stringona só ;
> se esse "=" for um "hífen" mesmo (não foi deixado claro), s/=\n//g;
>
> Dai sim, faça sua regex s/aaabbb/foobar/g;
> (ou não apaga os \n mas faz todas as posibilidades:
>    s/a(=\n)?a(=\n)?a(=\n)?b(=\n)?b(=\n)?b/foobar/;
>    ou mais eficiente:
>    s/a(?:=\n)?a(?:=\n)?a(?:=\n)?b(?:=\n)?b(?:=\n)?b/foobar/;
> )
>
> E pronto :-)
> Com a string contendo todo o arquivo, até isso bate:
> aa=
> a=
> b=
> bb
>
> (exercício para o leitor compilar de pt_BR pra perl :-) )


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