无法弄清楚为什么这个正则表达式不适用

无法弄清楚为什么这个正则表达式不适用

我正在使用 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 使用相同的正则表达式语法,除非存在\1vs.$1差异,但看起来确实如此。)

我猜问题出在别处——尝试一个不会失败的正则表达式,比如用替换ab看看它是否有任何效果。

答案2

谢谢大家。事实证明 Privoxy 太贪婪了,我没有注意到它占用的数据比我想象的要多得多。

答案3

不确定您正在使用什么 RE 引擎,但请尝试将 $1 更改为 \1 - 至少在 perl 中,这是反向引用通常的引用方式。

相关内容