\i (i= 0, 1, ...,9) matches the empty string if it is positioned before the i'th parenthesis. According to the specification, \i should match 'i' if positioned before the i'th parenthesis. E.g. \1 matches the empty string in \1\(2\)3.
There is a slight error in the current implementation of registers, when the parenthesis bounds a repetitive regexp, i.e. a '*' or '+' regexp. In this case, the register will not contain the correct character positions, but instead refer to the empty string, immediately after the matched substring. Use an extra pair of parenthesis to get the correct substring (e.g. use 1\(\(2\)*\)3 instead of 1\(2\)*3 to refer to the matched '2's - the matched '2's can be referred to through register 1.