My guess is that the reluctant qualifier is finding the shortest string that will match the pattern. That is an empty string since "\\d*?" can match 0 or more characters. It seems that no matter what the input string, "\\d*?" will always match on every empty string. I guess the *? qualifier only makes sense when it is followed by something. For example "\\d*?6" in this example would make sense.
This is a good question. I hope someone with more experience with regex will give a more definitive answer.
It seems as if the pattern is matching the empty string on every character it encounters for reluctant matching. Why? This doesn't seem intuitive to me.
As already mentioned, the reluctant pattern you created will match a blank string (zero length match). What doesn't seem intuitive is what happens afterwards. To understand that, you need to understand what the find() method does -- here is the relevant quote from JavaDoc.
This method starts at the beginning of the input sequence or, if a previous invocation of the method was successful and the matcher has not since been reset, at the first character not matched by the previous match.
Normally, the find() method will start the search for the next match at the end of the previous match. The exception is the zero length match. In that case, it will start at the next character. This is why it is matching "on every character it encounters".