このような正規表現は、有限数の開始/終了文字に対して定義できます (つまり、「開始と終了が 1 である場合、または開始と終了が 2 である場合」など)。ただし、無制限の文字数に対してこれを行うことはできません。これは単なる正規表現の事実です。正規表現は有限状態マシンの言語であり、有限状態マシンはカウントを行うことができません。そのためには、少なくともプッシュダウン オートマトン (文脈自由文法) の力が必要です。
簡単に言えば、正規表現は「私はxを見た後、私はyを見ました」と言うことができますが、 「私はxを見た後、同じ回数yを見た」とは言えません。
ただし、チューリング完全である Python プログラミング言語の全機能を使用して、これを簡単に行うことができます。チューリング完全な言語は間違いなく数えることができます:
>>> string = '[[A], [[B]], [C], [[D]]]'
>>> sameBrackets = lambda s: len(re.findall('\[',s)) == len(re.findall('\]',s))
>>> filter(sameBrackets, string.split(", "))
['[[B]]', '[C]']