[SP-pm] Substituicoes balanceadas

Gabriel Vieira gabriel.vieira em gmail.com
Segunda Fevereiro 6 13:49:00 PST 2006


Aeeeeeeeeee

hahah

quebrei a cabeça e consegui uma 'gambiarra'(será?)

Bom.. devido à procura da melhor solução, fiz com que sua string ficasse 
mais complexa, da seguinte forma:
---
abc abc abc \textit{abc abc} abc \textit{abc abc \textbf{abc \textbf{abc 
abc} abc} abc} abc.
---
* Coloquei um \textbf dentro de um \textbf que por sua vez estava dentro de 
um \textit

O intuito foi dificultar a string já que so com o \textbf dentro do \textit 
foi um pouco fácil resolver, mas havia a falha caso houvesse + de 1 '\text*' 
dentro do outro.
Deu pra entender? hehe..

Seguindo...

Escrevi o código para que fosse usado uma única vez, ou seja invés de um pro 
IT e outro pro BF ficam os 2 em 1 so. Você pode definir quantos quiser, já 
que basta apenas adicionar ao hash.

*No código eu coloquei \\textit com 2 barras pq o interpretador estava lendo 
como um comando tab (\t) ai não dava certo...

<code>
%inicio = ("it" => "<i>",
               "bf" => "<b>");
%fim = ("it" => "</i>",
             "bf" => "</b>");
$a = "abc abc abc \\textit{abc abc} abc \\textit{abc abc \\textbf{abc 
\\textbf{abc abc} abc} abc} abc.";
$a =~ s/\\text(\w{2})\{((\s|\w|<|>|\/)+)\}/$inicio{$1}$2$fim{$1}/g while $a 
=~ /\\text\w{2}\{(\s|\w|<|>|\/)+\}/;
print "$a";
</code>

Acho que da para melhorar...

Testa ai ;)

Abraços,

Gabriel Vieira

----- Original Message ----- 
From: "Roberto Maluhy Junior" <maluhy em gmail.com>
To: <saopaulo-pm em pm.org>
Sent: Monday, February 06, 2006 7:12 PM
Subject: [SP-pm] Substituicoes balanceadas


Ola mais uma vez,

La vou eu incomoda-los novamente. O Perl possui algum mecanismo ou
modulo que de conta de buscas balanceadas?
Vou citar um exemplo de LaTeX:
---
abc abc abc \textit{abc abc} abc \textit{abc abc \textbf{abc abc} abc} abc.
---

Se faco s/\\textit\{(.*?)\}/<i>$1</i>/g; fico com
abc abc abc <i>abc abc</i> abc <i>abc abc \textbf{abc abc</i> abc} abc. 
(ERRADO)

No entanto, gostaria de obter o seguinte resultado
abc abc abc <i>abc abc</i> abc <i>abc abc \textbf{abc abc} abc</i> abc. 
(CERTO)

Como faco isso? Preciso obrigatoriamente utilizar um contador ou flag
de "ambientes" abertos e fechados etc...?

Obrigado pela atencao,
Roberto
_______________________________________________
SaoPaulo-pm mailing list
SaoPaulo-pm em pm.org
http://mail.pm.org/mailman/listinfo/saopaulo-pm 



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