Вы можете использовать следующее регулярное выражение, совпадающее с чем-то_without_a_dot.something_without_a_dot в конце строки. Вы получите ответ в первой группе. Если вам также нужен домен верхнего уровня, вы можете заключить в ()
все, кроме $
.
([^.]+)\.[^.]+$
В SQL это дает:
SQL> select regexp_replace('sub1.sub2.domain.com', '^.*?([^.]+)\.[^.]+$', '\1') from dual;
REGEXP
------
domain
Нежадный .*?
в начале позволяет игнорировать начало строки.
Чтобы получить доменное имя плюс ДВУ:
SQL> select regexp_replace('sub1.sub2.domain.com', '^.*?([^.]+\.[^.]+)$', '\1') from dual;
REGEXP_REP
----------
domain.com
Для учета co.uk
:
SQL> select regexp_replace('sub1.sub2.domain.co.uk', '^.*?([^.]+\.(co\.uk|[^.]+))$', '\1') from dual;
REGEXP_REPLA
------------
domain.co.uk