2

Я использую Privoxy 3.0.10.0 для фильтрации веб-страниц, прежде чем они будут переданы в браузер.

Я не могу понять, почему это простое регулярное выражение не вызывает переписывание. Может быть, у кого-то более опытного будет идея:

Вот как это выглядит, когда я нажимаю CTRL-U в Firefox для просмотра исходного кода HTML:

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

Вот мое регулярное выражение; Я также добавил переключатель "я", чтобы игнорировать регистр, но безрезультатно

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

Спасибо за любую подсказку.

3 ответа3

4

Само регулярное выражение работает нормально, как показано в следующем примере 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>

(при условии, что Privoxy использует тот же синтаксис регулярных выражений, за исключением разницы \1 и $1 , но похоже, что так и есть.)

Я предполагаю, что проблема кроется в другом месте - попробуйте регулярное выражение, которое не может потерпеть неудачу, например, заменив a на b , чтобы увидеть, имеет ли оно какое-либо влияние.

2

Спасибо, ребята. Оказывается, Privoxy был жадным, и я не заметил, что он собирал намного больше данных, чем я думал.

0

Не уверен, какой движок RE вы используете, но попробуйте изменить $ 1 на \1 - так, по крайней мере, обратные ссылки обычно упоминаются в perl.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .