使用Python在内容中替换确切的单词

时间:2012-07-09 06:01:36

标签: python regex replace

我正在尝试使用正则表达式替换某些内容。我能够使用以下方法

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 "

但我想要做的是用内容中的确切内容替换旧词,如第二个应该替换为

<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 个答案:

答案 0 :(得分:1)

使用re.sub时,您可以将\0放入替换字符串中,该字符串将扩展为搜索表达式的匹配项。您需要确保\0不被解释为八进制转义符,因此使用原始字符串文字很方便。例如,您可以将代码的第三行更改为

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

你应该得到你正在寻找的行为。

由于您要使用整个匹配的字符串,因此无需在正则表达式中创建任何组。 0组始终定义为整个匹配的字符串。

答案 1 :(得分:0)

将关键字放在捕获组中。

old = '(the)'

使用捕获的文本作为替换(注意\1,表示第一个捕获组):

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

答案 2 :(得分:0)

在这种情况下,您需要使用反向引用(请参阅http://docs.python.org/library/re.html),例如:

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

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

将用“老猫”取代“猫”。

在您的情况下,请替换

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

replace = "..." + '\1' + "..."

答案 3 :(得分:0)

这解决了我的问题

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