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