Как написать регулярные выражения в Objective C (NSRegularExpression)?

У меня есть это регулярное выражение, когда я тестирую его в PHP, но в Objective C это не работает

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

Я пытался убежать от escape-персонажей, но это тоже не помогло. Должен ли я избежать какого-либо другого персонажа?

Это мой код в Цели 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);
}

-- ОБНОВИТЬ --

Это регулярное выражение возвращает (в PHP) массив со значениями «domain-name» и «tld.tld2», но в Objective C я получаю только одно значение: «domain-name.tld.tld2»

- ОБНОВЛЕНИЕ 2 -

Это регулярное выражение извлекает «доменное имя» и «TLD» из строки:

domain.com = (домен, com)domain.co.uk = (домен, co.uk)-test-domain.co.u = (тест-домен, со)-test-domain.co.uk- = (тест-домен, co.uk)-test-domain.co.u-k = (тест-домен, со)-test-domain.co-m = (тест-домен)-test-domain-.co.uk = (тестовый домен)

он принимает действительное имя домена (не начинающееся и не заканчивающееся на «-» и длиной от 2 до 63 символов) и до двух частей TLD, если эти части являются действительными (не менее двух символов, содержащих только буквы и цифры)

Надеюсь, это объяснение поможет.