と中括弧のペア間のすべてを削除します。私はしてもしなくてもよい、同じ順序の更なる部分文字列を含むことができる、%{...}
をマッチする部分を削除したい私はこのようになります文字列持っているSED
[%{%B%F{blue}%}master %{%F{red}%}*%{%f%k%b%}%{%f%k%b%K{black}%B%F{green}%}]
を。
私は最終出力として[master *]
を取得する必要があります。これまでの私の進捗状況:
gsed -E 's/%\{[^\}]*\}//g'
います:
echo '[%{%B%F{blue}%}master %{%F{red}%}*%{%f%k%b%}%{%f%k%b%K{black}%B%F{green}%}]' | gsed -E 's/%\{[^\}]*\}//g'
[%}master %}*%B%F{green}%}]
をので、これはがないが%{...}
を含まない%{...}
セクションのため正常に動作します。 %{%B%F{blue}%}
(それは%}
を返します)のような文字列では失敗します。私が何をしたいか
は私が一致}
を見つけるまで、かなり%{
と私が遭遇最初}
間のすべてを削除するよりも、それまでのすべてを削除し、文字列を解析しています。私はこれを行う方法がわかりません。
私はこれを行う方法はおそらく複数あることを十分に認識しています。可能であれば、質問で指定された方法に関する回答が好きですが、どんなアイデアも歓迎されている以上です。
正規表現は、ネストされたかっこの照合には適していません。ネストされたかっこは通常の言語を形成しません。 –
実際に正規表現を使用してネストされた括弧をマッチさせることはできませんが、有限の数字をより長い正規表現とマッチさせることはできますが、任意の数字にマッチさせることはできません。私は最大9つのレベルの入れ子にマッチするコードジェネレータを書きました。これはあなたが見た最大の正規表現でした。 – Benj
+1サンプル入力、期待される出力、実際のコードが使用されています。がんばろう。 – shellter