我在以下惯例中有一个CSV
# This works
gen = (x for x in range(10))
def hello(*args):
print args
hello(*gen)
# but this does not work
[] + gen
TypeError: can only concatenate list (not "generator") to list
问题是当我尝试正则表达我得到的outerStructure1时:
val1,val2,outerStruct1{valA,valB,innerStruct2{valX, valY},valC},...
代替:
outerStruct1{valA,valB,innerStruct2{valX, valY}
显然它会在第一个outerStruct1{valA,valB,innerStruct2{valX, valY},valC}
而不是最后一个(有效)返回。我目前的正则表达式是:
}
如何扩展它以达到合适的右支撑?
答案 0 :(得分:3)
\{.*?\}(?=(?:[^{}]*|\{[^{}]*(?:\{[^{}]*\}[^{}]*)*\})*$)
一般的想法是在匹配后检查,只有平衡的花括号保留直到字符串的末尾。
但请注意,此正则表达式不是递归的,并且不会处理大于2级的嵌套。