Python Regex立即取代群组

时间:2012-12-22 23:45:57

标签: python regex regex-group

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

正常方式:

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

但我希望实现这样的目标:

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

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

2 个答案:

答案 0 :(得分:123)

查看re.sub

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

这是Python的正则表达式替换(替换)函数。替换字符串可以填充所谓的反向引用(反斜杠,组编号),这些反向引用将替换为组匹配的内容。通过打开括号,将组计数与group(...)函数相同,即从1开始,从左到右。

答案 1 :(得分:18)

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

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

替换字符串。这样,您可以解决语法限制,其中组可能后跟一个数字。同样,这些都存在于文档中,没有什么新内容,有时很难一见钟情。