function::ngroups - Number of subexpressions in the last match.
returns the number of subexpressions from the last successful use of the =~
regex matching operator.
Note that this number includes subexpressions which are present in
the regex but did not match any string; for example, given the regex
“a|(b)”, the subexpressions will count the group for (b)
regardless of whether it matched a string or not. Throws an error if the
last use of =~ was a failed match.