正则表达式 - 字符串替换"按原样"

don*_*yor 5 python regex

我想这样做:

单词test应该在某些文本中找到并替换为<strong>test</strong>.但事情是,Test应该也被抓住并被替换<strong>Test</strong>.

我试过这个:

word = "someword"
text = "Someword and many words with someword"
pattern = re.compile(word, re.IGNORECASE)
result = pattern.sub('<strong>'+word+'</strong>',text)
Run Code Online (Sandbox Code Playgroud)

但在这种情况下,Someword正在成为someword.我用re错了吗?

我想要 <strong>Someword</strong> and many words with <strong>someword</strong>

ale*_*cxe 7

您需要使用捕获组:

>>> import re
>>> word = "someword"
>>> text = "Someword and many words with someword"
>>> pattern = re.compile('(%s)' % word, re.IGNORECASE)
>>> pattern.sub(r'<strong>\1</strong>',text)
'<strong>Someword</strong> and many words with <strong>someword</strong>'
Run Code Online (Sandbox Code Playgroud)

这里\1指的是第一个捕获的组,到括号内捕获的组.

另请参阅python 模块文档的" 搜索和替换"部分re.