我遵循以下约定
val1,val2,outerStruct1{valA,valB,innerStruct2{valX, valY},valC},...
问题是,当我尝试对exteriorStructure1进行正则表达式时,我得到了:
outerStruct1{valA,valB,innerStruct2{valX, valY}
代替:
outerStruct1{valA,valB,innerStruct2{valX, valY},valC}
因此,显然它返回第一个
}
而不是最后一个(有效)。我当前的正则表达式是:([a-zA-Z0-9]{0,}\{.*?\})
我如何扩展它才能找到合适的右括号?
最佳答案
\{.*?\}(?=(?:[^{}]*|\{[^{}]*(?:\{[^{}]*\}[^{}]*)*\})*$)
See it in action
通常的想法是检查比赛之后,只有平衡的花括号到字符串末尾为止。
但是,请注意,此正则表达式不是递归的,并且不会处理大于2个级别的嵌套。