Вам необходимо заключить отдельные части в круглые скобки, например, так:
sub("([0-9]{2})([0-9]{2})([0-9]{4})", "\\1.\\2.\\3", "31032017")
Затем вы можете использовать \\ 1 для доступа к части, соответствующей первой группе, \\ 2 для второй и т. Д.on.
Обратите внимание, что если ваша строка является датой, есть лучшие способы ее анализа / переформатирования, чем непосредственное использование регулярного выражения.