さまざまな開始ブラケットと終了ブラケットを含む文字列を解析したいとします(タイトルには括弧を使用しました。これは、より一般的であると考えているためです。それでも質問は同じです)。これにより、すべての上位レベルがリストで区切られます。
与えられた:
[hello:=[notting],[hill]][3.4(4.56676|5.67787)][the[hill[is[high]]not]]
が欲しいです:
List("[hello:=[notting],[hill]]", "[3.4(4.56676|5.67787)]", "[the[hill[is[high]]not]]")
私がこれを行う方法は、開き角かっこと閉じ括弧を数え、カウンターが0になるたびにリストに追加することです。しかし、私には醜い命令型コードがあります。元の文字列は整形式であると思われるかもしれません。
私の質問は、この問題に対する優れた機能的アプローチは何でしょうか?
注:for ... yield構造を使用することを考えましたが、カウンターを使用すると、単純な条件を取得できず(カウンターを更新するためだけに条件が必要です)、これをどのように使用できるかわかりません。この場合、構築します。