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"];
谢谢!
答案 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>";