In the context I'm dealing with, there will be no non-digits that could match, and ? chews up less space than [0-9]. But given a solution that assumes ?, it's easy enough to convert it to one using [0-9], where non-digits might appear. I doubt that the elegance (or lack thereof) of the code will be influenced much by the choice.