正規表現は文字列パターンマッチングに最適なツールですが、ここでその弱点の1つに遭遇しました。ブラケットのペアを一致させると、注意が必要になる場合があります。
より複雑な状況(つまり、プログラムコードを読み取ろうとする場合)では、解決策は正規表現をまったく使用せず、適切なコードパーサーを使用することです。
関係する正規表現構文は非常に厄介である可能性があり、このようなより高度な正規表現機能では、実装ごとに異なる構文が使用される可能性があるため、かなり単純なケースでも答えるのが難しい場合があります。この質問は、それをどのように行うか、および使用する可能性のあるさまざまな構文に関するヒントを提供する場合があります。
ただし、あなたの場合、問題はそれほど複雑ではなく、かなり単純な解決策が提示されます。式全体を必要な両方の角かっこで一致させるか、式全体をどちらの角かっこで一致させないでください。つまり、式の主要部分を2回繰り返します。1回は角かっこ付き、もう1回は角かっこなし、そしてor
それらの間のパイプです。
\(\[(?:[:0-9A-Fa-f]+)\])|(?:[:0-9A-Fa-f]+)\
お役に立てば幸いです。