Найти 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), и вам нужно отрегулировать их. Надеюсь, это поможет!