假设有一个字符串
正则表达式
{a:b,c:d},{a:b,c:d,e:[{d:e},{f:g}]}
,我想将其解析为标记a:b,c:d
a:b,c:d,e:[{d:e},{f:g}]
,以便稍后进一步解析。正则表达式
({(?:[^{}]++|(?1))*})
产生了{a:b,c:d}
{a:b,c:d,e:[{d:e},{f:g}]}
,但我卡在了如何匹配封闭的{}而不将它们包含在结果中。(该字符串可能包含比示例中未显示的更深层次的递归元素)
{((?:[^{}]++|(?R))*)}
,请参见demo。 - Wiktor Stribiżewa:b,c:d,e:[{d:e},{f:g}]
解析成a:b
,c:d
,e:[{d:e},{f:g}]
吗?与上面使用的相同方法导致正则表达式由于无限递归而失败。 - M Webjorn(\w+):((\[(?:[^][]++|(?3))*])|\w+)
。 - Wiktor Stribiżewa:b,c:d,e:[{d:e},{f:g}]
的正则表达式([^,\[]+(?:\[(?:[^\[\]]++)\])?)
会产生a:b
,c:d
,e:[{d:e},{f:g}]
。 - M Webjorn