Python Regex 立即替换组

有没有办法直接用正则表达式语法替换所有组?

正常的方式:

re.match(r"(?:aaa)(_bbb)", string1).group(1)

但我想达到这样的目标:

re.match(r"(\d.*?)\s(\d.*?)", "(CALL_GROUP_1) (CALL_GROUP_2)")

我想从 Regex 刚刚捕获的组中立即构建新的字符串。

124517 次浏览

看看 re.sub:

result = re.sub(r"(\d.*?)\s(\d.*?)", r"\1 \2", string1)

这是 Python 的 regex 替换(替换)函数。替换字符串可以用所谓的反向引用(反斜杠、组号)填充,这些反向引用被替换为组所匹配的内容。组的计数与 group(...)函数相同,即从 1开始,从左到右,用括号括起。

接受的答案是完美的。我要补充的是,组引用可能更好地实现了使用这种语法:

r"\g<1> \g<2>"

用于替换字符串。通过这种方式,您可以解决语法限制,即组后面可能跟着一个数字。再说一遍,这些都在文件中有所体现,没有什么新鲜的,只是有时一眼就很难看出来。