set -x

declare -A vars=( )

re='^(|[^=]* )([[:alpha:]_-][[:alnum:]_-]+)=([^[:space:]]+)( (.*))?$'
string="/something an-arg=some-value another-arg=another-value third-arg=three"
while [[ $string =~ $re ]]; do : "${BASH_REMATCH[@]}"
  string=${BASH_REMATCH[5]}
  declare -n _newVar="var_${BASH_REMATCH[2]//-/_}" || continue
  _newVar=${BASH_REMATCH[3]}
  unset -n _newVar
  declare -p "var_${BASH_REMATCH[2]//-/_}"
done
