Python 3.4 では、2 種類の最も内側の中括弧、つまり他の中括弧を含まない中括弧を一致させるために 2 つの異なる正規表現を使用しようとしています。
正規表現 1)他の中かっこまたはかっこ内にない最も内側の中かっこに一致します。つまり、次の式
re.findall(r'...something...',"aaa{bbb{ccc}ddd}eee{fff}ggg(hhh{iii})jjj{kkk}")
これを返します
['{fff}','{kkk}']
現時点では、次の式で試しています
re.findall(r'[^{(]*\{[^{}]+\}[^})]*',"aaa{bbb{ccc}ddd}eee{fff}ggg(hhh{iii})jjj{kkk}")
残念ながらこれを返します:
['bbb{ccc}ddd', '}eee{fff}ggg(hhh{iii', '})jjj{kkk}']
正規表現 2)他の中かっこまたはかっこ内にある最も内側の中かっこに一致します。つまり、次の式
re.findall(r'...something...',"aaa{bbb{ccc}ddd}eee{fff}ggg(hhh{iii})jjj{kkk}")
これを返します
['{ccc}','{iii}']
私はこの式で試しています:
re.findall(r'[{(]*\{[^{}]+\}[})]*',"aaa{bbb{ccc}ddd}eee{fff}ggg(hhh{iii})jjj{kkk}")
しかし、それはこれを返します:
['{ccc}', '{fff}', '{iii})', '{kkk}']
これらの正規表現を修正して正しい一致を得る方法について何か考えはありますか?