Предполагая, что ваша строка правильно отформатирована и не включает в себя такие вещи, как протокол [т.е. http://], вам нужны все символы до, но не включая финальный .tld.
Так что это самый простой способ сделать это. Хитрость с регулярными выражениями не в том, чтобы усложнять вещи:
.*(?=\.\w+)
Это в основном говорит, дайте мне все символы в наборе, за которым следует [например] .xxx , который в основном просто возвращает все до последнего периода. 1012 *
Если у вас нет заглядывания в будущее, его, вероятно, будет проще всего использовать:
(\w+\.)+
, который даст вам все, вплоть до финального '.' а затем просто обрежьте '.'.