"...and the matches, if any, of its subexpressions, as defined by the 'Submatch' descriptions in the package comment"
That means one value per actual parenthesised subexpression in the original expression. e.g. given expression ((\S+) (\S+) (\S+)) the results will be "aaa bbb ccc", "aaa", "bbb", "ccc".
((\S+) (\S+) (\S+))
^^ ^ ^
|| | |
|$2 $3 $4
|
$1
But if one parenthesised expression matches multiple times due to a repeat, it still gives a single value (the last match). That is: $1 is always $1, and $2 is always $2, based on their positions in the regexp. They don't shift along if there are multiple matches.