Extract string in square bracket

Hi

Input text is
[main] some message [value1] some message [value2] some message [value3]

Expected output is
main value1 value2 value3

Any idea how to above values in square brackets using shell scripting?

many thanks.

$ echo "[main] some message [value1] some message [value2] some message [value3]" | sed 's/^\[//;s/\][^\[]*\[/ /g;s/\]$//'
main value1 value2 value3
$

thanks Perderabo.

Any idea how to make more generic? I meant that input messages sometimes only have 1 items or more than 5 items.... the objective it to extract all values in square bracket in a given string.

example:
"some message [value1] some mesage [value2] [value3] some message[value4] some message [value5] some message"

output is
value1 value2 value3 value4 value5

many thanks

Here is one way of extracting the required strings using ksh93

str="some message [value1] some mesage [value2] [value3] some message[value4] some message [value5] some message"

echo ${str} | read -A words

while (( i < ${#words[@]} )); do
   if [[ ${words} =~ \[.*\] ]]; then
      str=${words/*\[/}       # strip left
      output+="${str/\]*/} "     # strip right & append
   fi
   (( i++ ))
done

echo "RESULT: $output"