2012-07-26 66 views
7

我需要建立一個正則表達式來刪除一個長字符串與搜索條件HREF鏈接,然後我解析爲一個Web視圖正則表達式來刪除HREF鏈接

中的href串的例子一些幫助: <a href="/search/?search=Huntington">Huntington</a>

我想刪除寄託都但鏈接(只鏈接自身)的純文本,但在遇到問題時

NSRegularExpression *regex = [NSRegularExpression regularExpressionWithPattern:@"<a href=\"/search/?search=([A-Z][a-z])\"" options:NSRegularExpressionCaseInsensitive error:&error]; 

任何幫助將受到極大的歡迎

感謝

回答

8

我覺得

NSRegularExpression *regex = [NSRegularExpression regularExpressionWithPattern:@"<a href=\"[^\"]+\">([^<]+)</a>" options:NSRegularExpressionCaseInsensitive error:&error]; 
NSString *modifiedString = [regex stringByReplacingMatchesInString:string options:0 range:NSMakeRange(0, [string length]) withTemplate:@"$1"]; 

應該工作(我測試了TextMate的正則表達式,但沒有的XCode)。

+0

這也應該工作。「「 – CarlJ 2012-07-26 08:41:05

+0

好吧,如果要替換爲正確的鏈接的純文本,你必須有一個組之間的圓括號 – Zoleas 2012-07-26 08:50:21

+3

sry,錯誤的複製和粘貼正則表達式,這裏是正確的:」(。*?)<\/a> 「 – CarlJ 2012-07-26 08:52:13

2

@ Helium3和@Carl解釋正上方,我想作爲corectly寫,我創造了這個功能從NSString的

刪除href標記
-(NSString *)deleteAHref:(NSString *)originalString 
{ 
    NSError *regexError = nil; 
    NSRegularExpression *regex = [NSRegularExpression regularExpressionWithPattern:@"<a href=.*?>(.*?)</a>" options:NSRegularExpressionCaseInsensitive error:&regexError]; 
    NSString *modifiedString = [regex stringByReplacingMatchesInString:originalString options:0 range:NSMakeRange(0, [originalString length]) withTemplate:@"$1"]; 
    return modifiedString; 
}