Найти URL внутри NSString (BBCode) с помощью RegexKitLite

ПРИВЕТ,

У меня есть NSString, которая содержит много текста. Внутри текста находится URL iTunes. URL-адрес маскируется с помощью BBCode. Как я могу извлечь простой URL?

Извините, но мои навыки регулярных выражений действительно плохие.

Текст:

Lorem Ipsum Dolor Sit Amet, Contetur Sadipscing Elitr, Sed Diam Nonumy Eirmod Tempor Invidunt Ut Labore и Dolore Magna Aliquyam Erat, Sed Diam Volptua. В версии [itunes link="http://www.example.tld/redirect.php? Url = http% 3A% 2F% 2Fitunes.apple.com% 2Fde% 2Fapp% 2Fbaby-monitor-alarm% 2Fid331519989% 3Fmt% 3D8 % 26uo% 3D4 "title =" Babyphon "] Lorem ipsum dolor sit amet, conettur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam coeptua. В вер

Моя первая попытка:

NSString *regEx = @"(link=?).*"; 
NSString *match = [myText stringByMatching:regEx]; 

if ([match isEqual:@""] == NO) { 
    NSLog(@"Match Ituneslink; %@", match); 
}
else
{ 
    NSLog(@"Not found."); 
}

Результат:

link = "http://www.appsnight.tv/redirect.php?url=http%3A%2F%2Fitunes.apple.com%2Fde%2Fapp%2Fmare-fernweh%2Fid379051618%3Fmt%3D8%26uo%3D4" title = "Маре"]

Это занимает слишком много, мне нужна только ссылка ITunes:-(

2 ответа

Решение

Я нашел это решение.

 NSString *regEx = @"(link=\"?)[a-zA-Z0-9:/.?=%-]*";
 NSString *match = [myText stringByMatching:regEx]; 

Если схема всегда одна и та же, вы можете действовать следующим образом:

NSRange begin = [myText rangeOfString:@"link="];
NSRange end = [myText rangeOfString:@" title="];

Используйте компоненты местоположения двух диапазонов, чтобы создать новый:

NSRange linkRange;
linkRange.location = begin.location + 6;
linkRange.length = (end.location - 1) - (linkRange.location);

С помощью которого вы можете сделать:

NSString *myLink = [myText substringWithRange:linkRange];

Я не пробовал это с вашим примером текста, может быть, я неправильно сместил (+6 и -1), и вам нужно отрегулировать их. Надеюсь, это поможет!

Другие вопросы по тегам