Код \w
соответствует одному буквенно-цифровому символу, например, набор [0-9A-Za-z_]
.
Квантор *
совпадает с квантификатором {0,}
, повторяет совпадение ноль или более раз.
Помещение знака вопроса после квантификатора делает его ленивым, т. Е. Оно соответствует как можно меньшему числу символов вместо максимально возможного.
Итак, \w*?
соответствует нулю или более буквенно-цифровых символов, лениво.
Если вы хотите отфильтровать символы, которые не могут быть в числе, почему бы просто не использовать отрицательный набор? Это будет соответствовать любому символу, который не является знаком минус или цифрой:
[^\-\d]