如何在Python PyPi regex模式中引用命名的捕获组

问题描述

正如标题所示,我们可以轻松地将正则表达式中的嵌套括号与例如。

(\(((?:[^()]+|(?1))+))
@H_502_4@

,将匹配平衡的括号。
我们如何使用命名的子组,例如在

(?P<key>\(((?:[^()]+|(?\g<key>))+))
@H_502_4@

我不是在寻找解析器解决方案,而是在Python@H_502_4@(regex@H_502_4@模块)或PCRE@H_502_4@中寻找上述模式。

解决方法

根据PyPi regex documentation命名后向引用语法

(?&NAME)

查看Python demo

import regex
print ( regex.sub(r'(?P<key>\((?:[^()]++|(?&key))+\))','','(ab(c)d) a(b()') )
# =>  a(b()