Подсчитайте, сколько \d+
у вас есть. Вы должны посчитать 3. Таким образом, ваше регулярное выражение будет максимально соответствовать 3 числам и не может совпадать с 4.
Я не уверен, что это опечатка или вы действительно не понимаете, но это можно исправить, добавив другую группу:
(\d+\.\d+(?:\.\d+(?:\.\d+)?)?)(\w?)
Это можно сократить до:
\d+(?:\.\d+){1,3}(\w?)
Если вы хотите сопоставить любое количество чисел больше 1, вы можете сделать:
\d+(?:\.\d+)+(\w?)
\w
будет соответствовать _
. Если вы не хотите этого, вы можете заменить его на [a-z]
.