この質問は、 「エスケープ」文字が存在しない限り一致しますが、承認された解決策がすべての場合に機能するとは限りません。
私のシナリオでは、JavaScript を使用しており、\[スラッシュ] でエスケープしない限り、[角括弧] でコンテンツをキャプチャしたいと考えています。
正規表現
(?:[^\\]|^)\[([^\]]*)\]
問題を確認するためにテストするサンプル:
This is a [block], but as you can see it is trying to capture the preceeding character.
You can \[escape] a block, but this creates \[problems] with [blocks] that are [stacked][back][to][back].