Найти URL внутри NSString (BBCode) с помощью RegexKitLite - PullRequest
0 голосов
/ 27 августа 2010

HI

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

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

Текст:

Lorem Ipsum Dolor Sit Amet, Contetur Sadipscing Elitr, Sed Diam Nonumy Eirmod Tempor Invidunt Ut Labore et 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, adetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diampiptua. At ver

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

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 =" Mare "]

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

Ответы [ 2 ]

0 голосов
/ 13 сентября 2010

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

 NSString *regEx = @"(link=\"?)[a-zA-Z0-9:/.?=%-]*";
 NSString *match = [myText stringByMatching:regEx]; 
0 голосов
/ 27 августа 2010

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

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

...