[0-9] is not always equivalent to d. In python3, [0-9] matches only 0123456789 characters, while d matches [0-9] and other digit characters, for example Eastern Arabic numerals.