Não consigo descobrir por que esse regex não se aplica


2

Estou usando o Privoxy 3.0.10.0 para filtrar páginas da Web antes que elas sejam repassadas para o navegador.

Não consigo descobrir por que esse simples regex não aciona uma reescrita. Talvez alguém mais experiente tenha uma idéia:

Aqui está o que parece quando eu clico no CTRL-U do Firefox para visualizar a fonte HTML:

<font color=#FF4AFF>JohnDoe</font>

Aqui está o meu regex; Também adicionei a opção "i" para ignorar maiúsculas e minúsculas

s|(<font color=.+?>JohnDoe</font>)|<span class=myclass>$1</span>|g

Obrigado por qualquer dica.


1
Isso não deve ser movido para a falha do servidor?
chakrit

1
Dada a resposta de RichieHindle: você tem certeza de que deseja incorporar o original completo nas <span>tags ou esperava que apenas a JohnDoeparte fosse copiada <span class=myclass>JohnDoe</span>? Apenas para ter certeza de que você não está negligenciando <span class=myclass><font color=#FF4AFF>JohnDoe</font></span>o resultado.
Arjan #

Respostas:


4

O próprio regex funciona bem, como mostra este exemplo do Python:

import re
print re.sub(r"(<font color=.+?>JohnDoe</font>)",
             r"<span class=myclass>\1</span>",
             "<font color=#FF4AFF>JohnDoe</font>")
# Prints <span class=myclass><font color=#FF4AFF>JohnDoe</font></span>

(supondo que o Privoxy use a mesma sintaxe regex, exceto a diferença \1vs. $1, mas parece que sim.)

Acho que o problema está em outro lugar - tente um regex que não pode falhar, como substituir apor b, para ver se está tendo algum efeito.


2

Obrigado pessoal. Acontece que o Privoxy era ganancioso, e eu não percebi que estava pegando muito mais dados do que eu pensava.


0

Não sabe ao certo qual mecanismo de ER você está usando, mas tente alterar o $ 1 para \ 1 - é assim que as referências anteriores geralmente são chamadas em perl.


Às vezes, você precisará usar \\ 1, dependendo do formato em que estiver escrevendo o regex.
jtbandes

1
Na reescrita de URL do Apache, usaria $ 1. Mas, se \ 1 deve realmente ser usado neste caso, então eu esperaria que a saída seja <span class=myclass>$1</span>- que esperamos que teria sido observado na pergunta então ...
Arjan
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.