два подхода; вначале при условии, что ваша собственность состоит из трех предметов, простая замена вашей первой (\ S *) на:
(\S+?)\.\S+?\.(\S+)
Заметьте, я также изменил * на +, так как не имеет смысла иметь ".." как часть свойства, я также использовал не жадные квалификаторы, но он все равно должен работать без них. Затем вы можете просто использовать соответствующие номера групп, чтобы восстановить настроенное свойство. Второй подход, предполагающий, что ваша случайная строка представляет собой шестнадцатеричное число (которое, по-видимому, является), а неслучайные части свойства не включают числа:
((?:\S+.)*)(?:[0-9A-Fa-f]+.)?((?:\S+.?)+)
Таким образом, первая группа должна забрать все до случайного числа (включая конечную точку), вторая группа съест случайное число, а затем третья будет соответствовать оставшейся строке (или целому, если нет части случайного числа) ).
EDIT
При обновленном описании проблемы и при сопоставлении только двух групп мой ответ такой: это невозможно. В регулярном выражении нет механизма «стирания» части совпадения. Из определения проблемы та часть ключа, которая не должна быть включена, находится в середине другого текста, то есть общий шаблон для сопоставления:
((a)(?:b)(c))
Поскольку мы не можем до или после обработки "b" всегда будет частью большей группы совпадений, которая включает в себя как a, так и c, тот факт, что это несоответствующая группа, не влияет на большую группу.