Não consigo entender porque 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 passadas para o navegador.

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

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

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

Aqui está o meu regex; Eu também adicionei o interruptor "i" para ignorar o caso, sem sucesso

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

Obrigado por qualquer dica.

    
por Jeff Atwood 25.07.2009 / 11:05

3 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></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 vs. $1 , mas parece que sim.)

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

    
por 25.07.2009 / 11:12
2

Comente os caras. Acontece que o Privoxy era ganancioso, e eu não percebi que estava tomando muito mais dados do que eu pensava.

    
por 29.07.2009 / 09:24
0

Não tenho certeza de qual mecanismo de RE você está usando, mas tente alterar o valor de $ 1 para \ 1 - é como as referências anteriores geralmente são mencionadas no perl, pelo menos.

    
por 25.07.2009 / 18:33