Вам нужно использовать регулярное выражение? Часто использование регулярного выражения является излишним. Несколько строк кода будут быстрее и более понятны, чем большое регулярное выражение.
Если у вашего языка есть метод split, просто используйте его на "."
, и tld будет последним элементом в массиве. Если вы застряли в C ++ или что-то еще, просто ищите в обратном направлении от конца строки до первого .
, тогда остальная часть строки с этой точки - это tld.
arr = url.split(".")
tld = arr[length - 1]
или
int period = url.find_from_last('.');
tld = url.substring(period, npos);
(я забыл точный синтаксис для C ++ std::string
, но что-то похожее на выше)