python正则表达式意外结束模式

问题描述 投票:0回答:1

我的问题很简单。我想解析像这样的字符串:

string = 'SENT (ADVWH Pourquoi) (NP (DET ce) (NC theme)) (PONCT ?)'

我想使用正则表达式(我不是专家,我之前几次使用它)。我想提取第一级括号,即我希望结果为:

(ADVWH Pourquoi)
(NP (DET ce) (NC theme))
(PONCT ?)

我使用这个正则表达式,我在regex101上测试成功,但它甚至不想编译:

re.compile(r"\(([^()]|(?R))*\)")

我也尝试过这些仍在regex101上工作的:

re.compile(r"\(([^\(\)]|(?R))*\)")
re.compile(r"\((([^\(\)]|(?R))*)\)")

我总是从python得到相同的答案:意外的模式结束。

我真的不明白这里有什么问题,为什么它适用于regex101而不是python。

非常感谢提前!

python regex
1个回答
1
投票

re不支持递归((?R)组) - 你需要使用PyPi包regex

© www.soinside.com 2019 - 2024. All rights reserved.