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);
我正在尝试用以下代码匹配和替换括号内标记的所有内容:
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);