3

正規表現を使用して一部のコンテンツを置き換えようとしています。私は次の方法を使用してそれを行うことができます

EX: """ The search technique is usefull, the search technique is usefull """
old = 'the'
toreplace = "<span class='highlight' STYLE='background-color:yellow'>" +  old + "</span>"
pattern = re.compile(re.escape(old), re.I)
highlighted_txt = re.sub(pattern,toreplace,A,count)

" <span class='highlight' STYLE='background-color:yellow'>the</span> search tech
nique is usefull, <span class='highlight' STYLE='background-color:yellow'>the</s
pan> search technique is usefull "

しかし、私がやりたいのは、古い単語を、2番目の「The」のようにコンテンツに正確にあるものに置き換えることです

<span class='highlight' STYLE='background-color:yellow'>The</span>

" <span class='highlight' STYLE='background-color:yellow'>the</span> search tech
nique is usefull, <span class='highlight' STYLE='background-color:yellow'>The</s
pan> search technique is usefull "
4

4 に答える 4

1

使用する場合は、検索式の一致に展開される置換文字列をre.sub入れることができます。が8 進エスケープとして解釈されない\0ようにする必要があるため、生の文字列リテラルを使用すると便利です。\0たとえば、コードの 3 行目を次のように変更できます。

toreplace = r"<span class='highlight' STYLE='background-color:yellow'>\0</span>"

探している動作が得られるはずです。

一致した文字列全体を使用する必要があるため、正規表現でグループを作成する必要はありません。0 グループは常に、一致した文字列全体として定義されます。

于 2012-07-09T06:11:15.133 に答える
0

キャプチャ グループ内にキーワードを配置します。

old = '(the)'

そして、キャプチャされたテキストを置換として使用します (\1最初のキャプチャ グループを示す に注意してください)。

toreplace = r"<span class='highlight' STYLE='background-color:yellow'>\1</span>"
于 2012-07-09T06:08:01.350 に答える
0

これで問題が解決しました

toreplace = "<span class='highlight' STYLE='background-color:yellow'>\g<0></span>"
于 2012-07-11T05:31:02.103 に答える
0

その場合、後方参照を使用する必要があります ( http://docs.python.org/library/re.htmlを参照)。例:

old = 'the (cat|dog|horse)'

replace = '<span>the old \1</span>'

「the cat」を「the old cat」に置き換えます。

あなたの場合、交換してください

replace = "..." + old + "..."

replace = "..." + '\1' + "..."
于 2012-07-09T06:10:21.000 に答える