[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"></pagina></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 "</pagina>" e mudar para uma <div
> style="page-break-before: always;"></div>. Consegui facilmente
> utilizando a expressão:
> /<\/pagina>/ 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.*><\/pagina><\/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 "><\/pagina><\/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 </pagina> . Como posso fazer isso?
>
> abraços
>
>
--
"Não manejo bem as palavras
Mas manipulo bem as strings."
------------------------------
tecnoveneno.blogspot.com
- Dúvida Regex, Arthur Cláudio de Almeida Pereira, 2011/08/10
- Re: [shell-script] Dúvida Regex,
jimmy <=