我正在使用 Privoxy 3.0.10.0 在网页传递到浏览器之前对其进行过滤。
我不明白为什么这个简单的正则表达式不会触发重写。也许更有经验的人会有一个想法:
当我按下 Firefox 的 CTRL-U 查看 HTML 源代码时,结果如下所示:
<font color=#FF4AFF>JohnDoe</font>
这是我的正则表达式;我还添加了“i”开关来忽略大小写,但无济于事
s|(<font color=.+?>JohnDoe</font>)|<span class=myclass>$1</span>|g
谢谢任何提示。
答案1
正则表达式本身运行良好,如以下 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
vs.$1
差异,但看起来确实如此。)
我猜问题出在别处——尝试一个不会失败的正则表达式,比如用替换a
,b
看看它是否有任何效果。
答案2
谢谢大家。事实证明 Privoxy 太贪婪了,我没有注意到它占用的数据比我想象的要多得多。
答案3
不确定您正在使用什么 RE 引擎,但请尝试将 $1 更改为 \1 - 至少在 perl 中,这是反向引用通常的引用方式。