/^\[[^\]]*\]/ =~ "[ab][cd]ああ"
$& #=> [ab]
$' #=> [cd]ああ

/^\[[^\]]*\]/ =~ $'
$& #=> [cd]
$' #=> ああ

/^\[[^\]]*\]/ =~ $'
#=> nil

Ruby で書いた。
行頭が\[ で、\[ 以外の文字が、0以上続いて、\] がある

$& はマッチした部分で、$' はマッチした部分の後ろを表すから、
マッチを繰り返していけば、出来るけど