删除标记<a> in NSString ios</a>的每个出现

时间:2012-08-01 08:45:41

标签: iphone ios regex cocoa

iOS中的正则表达式有点问题。 我想删除NSString中的每个标记<a>

我制作了这段代码,但它并没有在第一次出现时停止。

NSString *regexStr = @"<a (.+)>(.+)</a>";
    NSRegularExpression *regex = [NSRegularExpression regularExpressionWithPattern:regexStr options:NSRegularExpressionCaseInsensitive error:NULL];
    prodDescritpion = [regex stringByReplacingMatchesInString:prodDescritpion options:0 range:NSMakeRange(0, [prodDescritpion length]) withTemplate:@"$2"];

谢谢!

2 个答案:

答案 0 :(得分:3)

我找到了解决方案

NSString *regexStr = @"<a ([^>]+)>([^>]+)</a>";

NSRegularExpression *regex = [NSRegularExpression regularExpressionWithPattern:regexStr options:NSRegularExpressionCaseInsensitive error:NULL];

prodDescritpion = [regex stringByReplacingMatchesInString:prodDescritpion options:0 range:NSMakeRange(0, [prodDescritpion length]) withTemplate:@"$2"];

一切正常!

答案 1 :(得分:0)

+运算符是贪婪的,这意味着它在它找到的最后一次出现时停止。一种解决方案也可以是在非贪婪版本中使用它(即它在第一次出现时停止)

NSString *regexStr = @"<a.+?>.+?</a>";