re.sub 不使用 REGEX 组匹配替换

re.sub not replacing using REGEX group matching

我正在尝试用以下代码匹配和替换括号内标记的所有内容:

content = 'Should replace [obj[text]obj] inside [loc[brackets]loc]'
pattern = re.compile(r"\[([A-Za-z0-9]+)(\[(.*?)\])([A-Za-z0-9]+)\]")
for match in pattern.finditer(content):
  print(match.group(2))
  re.sub(match.group(2), 'xxx', content)

但是它一直返回完全相同的原始字符串。如果我去:

new=re.sub(match.group(2), 'xxx', content)

它 returns 一些我仍然无法解释的非常随机的东西。这让我感到困惑,因为第 4 行的打印显示发现是正确的。

非常感谢。

你不应该循环播放。只需调用 re.sub() 一次,它将替换所有出现的正则表达式。在替换字符串中使用 back-references 将部分匹配项复制到替换字符串中。

new = re.sub(pattern, r'[xxx]', content);

DEMO