我的问题很简单。我想解析像这样的字符串:
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。
提前多多感谢!
答案 0 :(得分:1)
re
不支持递归((?R)
组) - 您需要使用PyPi包regex