Python中的递归正则表达式?

3

I have string:

acd (e(fg)h) ij)

我需要删除打开和对应关闭括号中的文本。例如,我需要删除

(e(fg)h)

我想要的结果是:
acd del ij)

我会尝试使用下面的代码:

我尝试使用以下代码:

re.sub(r'\((((?>[^()]+)|(?R))*)\)', r'del', 'acd (e(fg)h) ij)')

但Python说:

sre_constants.error: unexpected end of pattern

2
Python不支持递归正则表达式。您可能需要查看regex模块以访问递归正则表达式(以及一些当前未受re模块支持的其他正则表达式语法)。 - Jerry
2
这个可能会有帮助:https://dev59.com/OG035IYBdhLWcg3wYe8F#12280660 - devnull
1个回答

3

感谢Jerry和devnull!使用Python中的regex模块而不是默认的re模块解决了我的问题。

import regex
>>> regex.sub(r'\((((?>[^()]+)|(?R))*)\)', r'del', 'acd (e(fg)h) ij)')
'acd del ij)'

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接