2015-08-18 4 views
1

Я пытаюсь захватить ссылку YouTube из строки текста с помощью NSRegularExpression, хотя и не уверен, как захватить всю ссылку я могу получить его, чтобы соответствовать с помощью этого:NSRegularExpression для ссылки YouTube

NSRegularExpression *regex = [NSRegularExpression 
            regularExpressionWithPattern:@"http://youtube.*" 
            options:NSRegularExpressionCaseInsensitive 
            error:&error]; 

Пример строки :

"Hello please take a look at the following: https://www.youtube.com/watch?v=C-UwOWB9Io4&feature=youtu.be For tomorrow thanks." 

Любые мысли о том, как это можно достичь?

+0

отредактированы, например URL – Md1079

+0

ObjC или Swift Похоже, Objective-C. –

+0

ObjC - это признанный язык – Md1079

ответ

3

Предполагается, что URL-адрес начинается с «http» или «https» и что в URL-адресе отсутствуют пробелы и пробел, следующий за URL-адресом, это кажется разумным.

NSString *searchString = @"Hello please take a look at the following: https://www.youtube.com/watch?v=C-UwOWB9Io4&feature=youtu.be For tomorrow thanks."; 

NSRange searchRange = NSMakeRange(0, [searchString length]); 
NSString *pattern = @"(http[s]?://www.youtube.com\\S+)"; 
NSError *error = nil; 

NSRegularExpression* regex = [NSRegularExpression regularExpressionWithPattern:pattern options:0 error:&error]; 
NSTextCheckingResult *match = [regex firstMatchInString:searchString options:0 range: searchRange]; 
NSRange matchRange = [match rangeAtIndex:1]; 
NSLog(@"matchRange: %@", NSStringFromRange(matchRange)); 
NSString *matchString = [searchString substringWithRange:matchRange]; 
NSLog(@"matchString: %@", matchString); 

Выход:

matchRange: {43, 60}
MatchString: https://www.youtube.com/watch?v=C-UwOWB9Io4&feature=youtu.be

Если вы хотите "WWW." быть по желанию вы можете использовать thei шаблон (кончик шляпу @MikeAtNobel за идею:

"(http[s]?://(?:www\\.)?youtube.com\\S+)" 

ICU Руководство пользователя: Regular Expressions

+0

Почему в вашем регулярном выражении есть две обратные косые черты перед 'S'? – dudeman

+1

Потому что язык« C »требует этого. – zaph

+0

Предупреждение генерируется компилятором: Неизвестная escape-последовательность '\.' – zaph

 Смежные вопросы

  • Нет связанных вопросов^_^