在下面的输入字符串中,我想根据正则表达式搜索条件将“item”替换为“replacement_item”。
re.findall(r"(\bsee\b|\bunder\b|\bin\b|\bof\b|\bwith\b|\bthis\b)( *.{0,4})(item)","i have many roof item in the repeat item of the item inthe item downunder. with any item")
给出输出:
[('of', ' the ', 'item'), ('with', ' any ', 'item')]
我想将上述匹配词组中的“item”关键字替换为“replacement_items”。
Expected output: i have many roof item in the repeat item of the replaced_item inthe item downunder. with any replaced_item
答案 0 :(得分:1)
您可以使用\1\2replaced_item
替换字符串获得预期输出:
import re
pat = r"\b(see|under|in|of|with|this)\b( *.{0,4})(item)"
s = "i have many roof item in the repeat item of the item inthe item downunder. with any item"
res = re.sub(pat, r"\1\2replaced_item", s)
print(res)
请参阅Python demo
另外,请注意单词边界现在如何限制交替中的单词的上下文(因为它们被移出,两端只需要1个单词边界)。
请注意:如果replaced_item
是占位符,并且可以以数字开头,则应使用r'\1\g<2>replace_item'
。 \g<2>
是一种明确的反向引用符号,请参阅python re.sub group: number after \number SO post。