有没有办法使用正则表达式语法直接替换所有组?
正常方式:
re.match(r"(?:aaa)(_bbb)", string1).group(1)
但我想实现这样的目标:
re.match(r"(\d.*?)\s(\d.*?)", "(CALL_GROUP_1) (CALL_GROUP_2)")
我想从 Regex 刚刚捕获的组中立即构建新字符串。
有没有办法使用正则表达式语法直接替换所有组?
正常方式:
re.match(r"(?:aaa)(_bbb)", string1).group(1)
但我想实现这样的目标:
re.match(r"(\d.*?)\s(\d.*?)", "(CALL_GROUP_1) (CALL_GROUP_2)")
我想从 Regex 刚刚捕获的组中立即构建新字符串。
看看re.sub
:
result = re.sub(r"(\d.*?)\s(\d.*?)", r"\1 \2", string1)
这是 Python 的正则表达式替换(replace)函数。替换字符串可以填充所谓的反向引用(反斜杠、组号),这些反向引用被替换为组匹配的内容。组的计数与group(...)
函数相同,即从 开始1
,从左到右,通过开括号。
接受的答案是完美的。我要补充一点,使用这种语法可能会更好地实现组引用:
r"\g<1> \g<2>"
用于替换字符串。这样,您可以解决组后面可能跟一个数字的语法限制。同样,这一切都存在于文档中,没有什么新鲜的,只是有时很难一见钟情。