Если вы хотите сопоставить до трех цифр, попробуйте:
((?:\d+\.?){1,3})
Часть {1,3}
соответствует 1-3 предыдущего элемента (это одна или несколько цифр, за которыми следует литерал .
. Обратите внимание, что точка экранирована, поэтому не соответствует ни одному символу.
Редактировать
Дальнейшее объяснение: (?: )
часть - это группировка, которая не может использоваться для обратных ссылок (как правило, быстрее), см. Раздел 4.3 здесь для получения дополнительной информации. Конечно, вы также можете просто использовать ((\d+\.?){1,3})
, если хотите. Для получения дополнительной информации о {1,3}
см. здесь в разделе «Ограничение повторения».
Редактировать (2)
Исправлена ошибка, указанная dtmunir. Альтернативный способ, который немного более явный (и не улавливает лишние "." В конце ранних групп):
((?:\d+\.){0,2}\d+)