中かっこが一致する行を含むファイルが多数あります。ブラケットが一致しているかどうかは気にしません。
左括弧の後にどちらが最初に来るかを確認することで、中括弧がネストされているかどうかを確認したいと思います - 右括弧または別の左括弧。すべての括弧が一致し、行ごとに最大で 1 つの外側括弧があると仮定します。(つまり[foo[bar]]、は有効な行ですが[foo][bar]、2 番目の角かっこのペアがネストされていないため、そうではありません)。
を使用して、この質問からブラケットペア内のすべてを取得できますが、取得した's/.*\[\([^]]*\)\].*/\1/g'文字列を再テストしてさらに一致させる方法がわかりません。
たとえば、次の文字列があるとします。
foo [ bar, [baz] ]
私が取ると思う手順は次のとおりです。
- 左側から開口ブラケットが見えるまでトラバースします。(何も見つからない場合は、その行を無視してください)。
[または のいずれか]に遭遇するまで、左中かっこから貪欲に検索しません。の場合[、括弧がネストされているため、行を返します。もし]、
理想的には、sedまたは unix ツール ベースのソリューションが必要ですが、他のものも受け入れられます (perlたとえば、)。どんな助けでも大歓迎です。
