有没有办法用正则表达式语法直接替换所有组?
正常方式:
re.match(r"(?:aaa)(_bbb)", string1).group(1)
但我希望实现这样的目标:
re.match(r"(\d.*?)\s(\d.*?)", "(CALL_GROUP_1) (CALL_GROUP_2)")
我想从Regex刚刚捕获的组中即时构建新字符串。
答案 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>"
替换字符串。这样,您可以解决语法限制,其中组可能后跟一个数字。同样,这些都存在于文档中,没有什么新内容,有时很难一见钟情。