Полагаю, ответ в том, что переписывание на самом деле не нужно.
И это похоже на проблему с дисплеем.
Однако в интересах получения лучшего результата регулярного выражения, один
как это может дать лучшие результаты:
/^http[s]?:\/\/(.*?)\.?([^\/.\r\n?]+\.[^\/.\r\n?]+)(?=\/|$)/mg
https://regex101.com/r/JE1AHF/1
Группа 1 получает субдомены
Группа 2 получает TLD и первый поддомен.
Версия для чтения:
^
http s? ://
( .*? ) # (1)
\.?
( [^/.\r\n?]+ \. [^/.\r\n?]+ ) # (2)
(?= / | $ )