Can someone suggest to me what I'm doing wrong?
The .+ looks wrong, since it can match [[ and ]] too. You should use [^\]]+ in the first place.
Update: Here's a working regex:
\[\[([^\]]+)]]
But it stops at a single ]. To prevent that, you need a negative look-ahead:
\[\[((?:(?!\]\]).)+)]]
Now that's quite unreadable, so here in detail:
\[\[ # opening delimiter
( # capture...
(?: # a group
(?!\]\]) # that does not start with ]]
. # and is a single character long
)+ # and many of these groups, at least one.
)
]] # closing delimiter