この正規表現が適用されない理由を理解できません


2

Privoxy 3.0.10.0を使用して、Webページがブラウザに渡される前にフィルタリングします。

この単純な正規表現が書き換えを引き起こさない理由はわかりません。たぶん、より経験豊富な誰かがアイデアを持っているでしょう:

FirefoxのCTRL-Uを押してHTMLソースを表示すると、次のようになります。

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

これが私の正規表現です。また、大文字と小文字を区別しない「i」スイッチを追加しました。

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

ヒントをありがとう。


1
これをserverfaultに移動すべきではありませんか?
チャクリット2009

1
RichieHindleの答えを考えると、タグ内に完全なオリジナルを埋め込んでよろしいですか<span>、それともJohnDoe一部だけがコピーされると思っていました<span class=myclass>JohnDoe</span>か?<span class=myclass><font color=#FF4AFF>JohnDoe</font></span>結果を見逃さないようにするためです。
アルジャン

回答:


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は同じ正規表現構文を使用しており、\1vs。の$1違いはありませんが、実際にはそうです。)

私はこの問題は、他の場所であると思います-交換するように、失敗することはできません正規表現を試しab、それはまったく効果を持つのかどうか確認するために、。


2

みんなありがとう。Privoxyは貪欲であり、思ったよりもはるかに多くのデータを必要としていることに気づきませんでした。


0

どのREエンジンを使用しているかはわかりませんが、$ 1を\ 1に変更してみてください-これが、少なくともperlでの後方参照の参照方法です。


正規表現を作成している形式に応じて、\\ 1を使用する必要がある場合があります。
jtbandes

1
ApacheのURL書き換えでは、1ドルを使用します。ただし、この場合に\ 1を実際に使用する必要がある場合、出力が期待<span class=myclass>$1</span>されます
...-Arjan
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.