php 正则表达式 递归,正则表达式中的递归模式

这与正则表达式匹配外括号非常相关,但是,我特别想知道该正则表达式的递归模式如何或是否可行?我尚未找到使用此策略的python示例,因此认为这应该是一个有用的问题!

我已经看到 了一些 索赔 是递归的模式可以用来匹配平衡括号,但使用Python的没有例子正则表达式包(注:重不支持递归模式,你需要使用正则表达式)。

一种说法是语法位于b(?:m|(?R))*e:

b是开始构造的东西,m是可能在构造中间发生的东西,是可能在构造e结束时发生的东西

我想在下面提取外括号的匹配项:

"{1, {2, 3}} {4, 5}"

["1, {2, 3}", "4, 5"]  # desired

请注意,这对于内部括号很容易做到:

re.findall(r"{([^{}]*)}", "{1, {2, 3}} {4, 5}")

['2, 3', '4, 5']

(在我的示例中,我正在使用finditer(在match对象上),请参见此处。)

因此,我希望以下内容或某些变体能够起作用:

regex.findall(r"{(:[^{}]*|?R)}", "{1, {2, 3}} {4, 5}")

regex.findall(r"({(:[^{}]*|?R)})", "{1, {2, 3}} {4, 5}")

regex.findall(r"({(:.*|(?R))*})", "{1, {2, 3}} {4, 5}")

regex.findall(r"({(:.*)|(?R)*})", "{1, {2, 3}} {4, 5}")

regex.findall(r"({(:[^{}])|(?R)})", "{1, {2, 3}} {4, 5}")

但我为[]或感到沮丧error: too much backtracking。

是否可以使用正则表达式的递归为外部括号提取匹配对象?

显然,我冒着被以下人员击落的风险:

不要用正则表达式解析html

用pyparse做到这一点

编写适当的词法分析器和解析器,例如使用ply

我想强调一下这是关于如何使用递归模式的(如果我的理解是正确的,它将使我们脱离常规语言的分析范围,因此实际上可能!)。如果可以做到,那应该是一个更清洁的解决方案。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值