Objective-C中的正则表达式

时间:2011-12-29 19:33:21

标签: iphone objective-c

我想替换所有类似<xxxx>的标签。

我试过了:

- (NSString *)grabData:(NSString *)searchTerm {
// Setup an error to catch stuff in 
NSError *error = NULL;
//Create the regular expression to match against
NSRegularExpression *regex = [NSRegularExpression regularExpressionWithPattern:@"<.*>" options:NSRegularExpressionCaseInsensitive error:&error];
// create the new string by replacing the matching of the regex pattern with the template pattern(whitespace)
NSString *newSearchString = [regex stringByReplacingMatchesInString:searchTerm options:0 range:NSMakeRange(0, [searchTerm length]) withTemplate:@""];   
NSLog(@"New string: %@",newSearchString);
return newSearchString;
}

但这不起作用。有谁可以帮助我?

2 个答案:

答案 0 :(得分:2)

模式<.*>匹配少于,任意数量的,包括大于,然后是大于。例如,此模式将匹配完整的HTML文件...

你需要的是<[^>]+> [^>]是所有字符的集合,不包括大于,+是“一个或多个”,所以整个事情匹配较少-than,中的一个或多个排除大于,然后大于。

答案 1 :(得分:0)

您的正则表达式不正确。

  1. &LT;和&gt;是元字符,需要转义
  2. 模式匹配应为。+
  3. 基于此用途

    NSRegularExpression *regex = [NSRegularExpression regularExpressionWithPattern:@"\\<.+\\>" options:NSRegularExpressionCaseInsensitive error:&error];
    

    它应该有效