Como escrever expressões regulares no Objective C (NSRegularExpression

Eu tenho esse regex funcionando quando testo em PHP, mas não funciona no Objetivo C:

(?:www\.)?((?!-)[a-zA-Z0-9-]{2,63}(?<!-))\.?((?:[a-zA-Z0-9]{2,})?(?:\.[a-zA-Z0-9]{2,})?)

Tentei escapar dos caracteres de escape, mas isso também não ajuda. Devo escapar de qualquer outro personagem?

Este é o meu código no Objetivo C:

NSMutableString *searchedString = [NSMutableString stringWithString:@"domain-name.tld.tld2"];
NSError* error = nil;

NSRegularExpression* regex = [NSRegularExpression regularExpressionWithPattern:@"(?:www\\.)?((?!-)[a-zA-Z0-9-]{2,63}(?<!-))\\.?((?:[a-zA-Z0-9]{2,})?(?:\\.[a-zA-Z0-9]{2,})?)" options:0 error:&error];
NSArray* matches = [regex matchesInString:searchedString options:0 range:NSMakeRange(0, [searchedString length])];
for ( NSTextCheckingResult* match in matches )
{
    NSString* matchText = [searchedString substringWithRange:[match range]];
    NSLog(@"match: %@", matchText);
}

- ATUALIZAÇÃO -

Este regex retorna (em PHP) a matriz com os valores "domain-name" e "tld.tld2", mas no Objective C, recebo apenas um valor: "domain-name.tld.tld2"

- ATUALIZAÇÃO 2 -

Este regex extrai 'domain name' e 'TLD' da string:

domain.com = (domínio, com) domain.co.uk = (domínio, co.uk) -test-domain.co.u = (domínio de teste, co) -test-domain.co.uk- = (domínio de teste, co.uk) -test-domain.co.u-k = (domínio de teste, co) -test-domain.co-m = (domínio de teste) -test-domain-.co.uk = (domínio de teste)

it leva o nome de domínio válido (não começando ou terminando com '-' e com 2 a 63 caracteres) e até duas partes de um TLD se as partes forem válidas (pelo menos dois caracteres contendo apenas letras e números)

Espero que esta explicação ajud

questionAnswers(4)

yourAnswerToTheQuestion