我正在尝试使用正则表达式替换某些内容。我能够使用以下方法
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 "
答案 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>"