2010-08-27 55 views
0

HI,使用RegexKitLite在NSString(BBCode)中查找URL使用RegexKitLite

我有一個包含大量文本的NSString。文字內部是iTunes網址。該網址被BBCode掩蓋。我如何提取普通網址?

對不起,但我的正則表達式技能真的很糟糕。

文本:

Lorem存有悲坐阿梅德,consetetur sadipscing elitr,SED直徑nonumy eirmod tempor invidunt UT labore等dolore麥格納aliquyam ERAT,sed的直徑voluptua。在版本號 [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,consetetur sadipscing elitr,sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat,sed diam voluptua。在版本

我第一次嘗試:

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

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

結果:

鏈接=「http://www.appsnight.tv/redirect.php?url=http%3A %2F%2Fitunes.apple.com%2Fde%2Fapp%2Fmare-fernweh%2Fid379051618%3Fmt%3D8%26uo%3D4" 稱號= 「馬」]

需要太多,我只需要在iTunes鏈接:-(

回答

0

我找到了這個解決方案。

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

如果方案始終是相同的,你可以這樣進行:

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)錯誤,你需要調整它們。希望有所幫助!