the reason is that you cannot get overlapping results. With regular expressions that support lookahead, you can use the: trick (?=([0-9]+[dh]){2}), but the language does not support it.
If you want to get all the results, I suggest you use FindAllStringIndex()c ([0-9]+[dh]), and then define all continuous substrings with an offset.