Попробуйте этот шаблон: (\S*?)(?:\.(1)$|$)
Объяснение
(\S*?)
- \S*
из вашего шаблона с добавленным ленивым квантификатором (?
),Это будет соответствовать как можно меньшему числу символов
(?: ... )
- группа без захвата для сохранения номеров желаемой группы захвата
\.(1)$|$
- (1) буквальная точка \.
, за которой следует символбуквально 1
(хранится в группе захвата), за которым следует конец строки $
ИЛИ (2) конец строки (в случае отсутствия .1
)
Образец теста
ВХОД:
aaa.aa.aa.1
aaa.aa.aa
bbbbb.1
bbbbb
ВЫХОД:
[1] aaa.aa.aa [2] 1
[1] aaa.aa.aa [2] (empty)
[1] bbbbb [2] 1
[1] bbbbb [2] (empty)
ПРИМЕЧАНИЕ : Спросил в комментариях о ситуации aaa.aa.aa.
и было установлено, что этоне ожидается ввода. Этот шаблон не удалит последнюю точку, так как 1