shell-script-pt
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [shell-script] Dúvida Regex


From: jimmy
Subject: Re: [shell-script] Dúvida Regex
Date: Wed, 10 Aug 2011 19:55:23 -0300
User-agent: mutt-ng/devel-r804 (Linux)

On Wed, Aug 10, 2011 at 04:54:10PM -0300, Arthur Cláudio de Almeida Pereira 
wrote:
> 
> 
> Fala galera,
> 
> Não sei se aqui é o melhor lugar para postar isso mas to com um
> probleminha de expressão regular e n sei como resolver..
> 
> Tenho o seguinte texto:
> <P ALIGN="LEFT"> <font FACE="Arial" style="font-size: 12px;"
> COLOR="#000000" LETTERSPACING="0" KERNING="0">teste 1</font></P><P
> ALIGN="LEFT"> <font FACE="Arial" style="font-size: 12px;"
> COLOR="#000000" LETTERSPACING="0" KERNING="0"></font></P><P
> ALIGN="LEFT"> <font FACE="Arial" style="font-size: 12px;"
> COLOR="#000000" LETTERSPACING="0"
> KERNING="0">&lt;/pagina&gt;</font></P></TEXTFORMAT><P ALIGN="LEFT">
> <font FACE="Arial" style="font-size: 12px;" COLOR="#000000"
> LETTERSPACING="0" KERNING="0"></font></P><P ALIGN="LEFT"> <font
> FACE="Arial" style="font-size: 12px;" COLOR="#000000" LETTERSPACING="0"
> KERNING="0">teste 2</font></P>
> 
> Quero pegar o texto "&lt;/pagina&gt;" e mudar para uma <div
> style="page-break-before: always;"></div>. Consegui facilmente
> utilizando a expressão:
> /&lt;\/pagina&gt;/ e substitui para o texto que queria
> 
> Mas agora eu preciso remover a tag font em que ele se encontra:
> Inocentemente tinha utilizado a expressão:
> /<font.*>&lt;\/pagina&gt;<\/font>/
Nunca use o dot-star (.*) a não ser que realmente precise dele.

Você não quer  tudo começando em "<font" e indo  até a última ocorrência
de ">&lt;\/pagina&gt;<\/font>" que foi o resultado que recebeu. Troque o
.* por uma lista negada "[^>]" que já resolve seu caso.

Obs1.: Tem engines de regexp que aceitam .*? e nesse caso daria na mesma
de usar a lista  negada, pois implicaria em dizer "a  menor porção até o
primeira ocorrência dê" (no caso o primeiro ">")

Obs2.: Expressões regulares não são a melhor forma de se fazer parser de
html, de qualquer forma, se seu html for bem previsível funcionará muito
bem.

> o problema que se reparem com essa expressão ele vai pegar a
> partir da segunda tag <font e só vai me retornar o
> <P ALIGN="LEFT"> <div style="page-break-before: always;"></div><P
> ALIGN="LEFT"> <font FACE="Arial" style="font-size: 12px;"
> COLOR="#000000" LETTERSPACING="0" KERNING="0"></font></P><P
> ALIGN="LEFT"> <font FACE="Arial" style="font-size: 12px;"
> COLOR="#000000" LETTERSPACING="0" KERNING="0">teste 2</font></P>
> Removendo tudo a partir da primeira tag font que ele encontra.
> 
> Resumindo, gostaria de pegar a tag font que está exatamente
> atrás da palavra &lt;/pagina&gt; . Como posso fazer isso?
> 
> abraços
> 
> 

-- 
"Não manejo bem as palavras
Mas manipulo bem as strings."
------------------------------
 tecnoveneno.blogspot.com


reply via email to

[Prev in Thread] Current Thread [Next in Thread]