是否有任何方法可以使用regex语法直接替换所有组?正常的道:
re.match(r"(?:aaa)(_bbb)", string1).group(1)
但我想实现这样的目标:
re.match(r"(\d.*?)\s(\d.*?)", "(CALL_GROUP_1) (CALL_GROUP_2)")
我想从Regex刚刚捕获的组中立即构建新的字符串。
4nkexdtk1#
看一下re.sub:
re.sub
result = re.sub(r"(\d.*?)\s(\d.*?)", r"\1 \2", string1)
这是Python的正则表达式替换(replace)函数。替换字符串可以用所谓的反向引用(backreferences)(反斜杠,组号)填充,这些反向引用被替换为与组匹配的内容。组的计数与group(...)函数相同,即从1开始,通过左括号从左到右计数。
group(...)
1
xpcnnkqh2#
公认的答案是完美的。我想补充的是,使用以下语法可能更好地实现组引用:
r"\g<1> \g<2>"
替换字符串。通过这种方式,您可以绕过语法限制,即一个组后面可能跟着一个数字。同样,这在文档中都存在,没有什么新的,只是有时第一眼很难发现。
2条答案
按热度按时间4nkexdtk1#
看一下
re.sub
:这是Python的正则表达式替换(replace)函数。替换字符串可以用所谓的反向引用(backreferences)(反斜杠,组号)填充,这些反向引用被替换为与组匹配的内容。组的计数与
group(...)
函数相同,即从1
开始,通过左括号从左到右计数。xpcnnkqh2#
公认的答案是完美的。我想补充的是,使用以下语法可能更好地实现组引用:
替换字符串。通过这种方式,您可以绕过语法限制,即一个组后面可能跟着一个数字。同样,这在文档中都存在,没有什么新的,只是有时第一眼很难发现。