Reason: in the original the trailing "(\d)" eats the digit following the symbol and then that digit is no longer available for matching the preceding digit in the expression. IOW the same character cannot be used to match both the first \d and the second \d so once the first \d captures the 6 there is no \d to match before trailing period.
By using the construct (?:\d) you are zero-width (non-capturing) asserting the the next character is a digit but you are not consuming it and so the continuation of the global matching still has that character to match the first \d.