If you want to capture R, G, B in different subgroups, so that you can extract them with (match-string group), at some point you need to have three groups of parentheses in your regular expression.
\(...\)\(...\)\(...\)
Otherwise, if you use a repeat pattern, for example
\(...\)\{3\}
, . , , -
\([[:xdigit:]]\{2\}\)\{3\}
"A0B1C2", (match-string 1) , "C2", .
, : , , , , , , , , .
, -
(let ((hex2 "\\([[:xdigit:]]\\{2\\}\\)"))
(concat "#" hex2 hex2 hex2))
, .