[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