将NSRegularExpression重写为RegexKit

时间:2011-11-15 09:51:13

标签: objective-c cocoa osx-snow-leopard nsregularexpression regexkit

我对Mac OS X开发很新(仅仅是我的第二天)。做了几个月的iOS编程,得到了基础知识,制作了一个小应用程序。然后当我突然遇到问题时,我决定将其用于Mac OS X:NSRegularExpression仅受Mac OS X 10.7或更高版本支持,而我使用的是10.6.7。经过一番谷歌搜索后,我发现了一个RegexKit.framework。所以我安装了它,但后来我必须为RegexKit框架重写这段代码。

NSString *aString = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];
NSError *error = nil;
NSRegularExpression *regex = [NSRegularExpression         
                              regularExpressionWithPattern:@"(\\{.*?\\})"
                              options:NSRegularExpressionCaseInsensitive
                              error:&error];
[regex enumerateMatchesInString:aString options:0 range:NSMakeRange(0, [aString length]) usingBlock:^(NSTextCheckingResult *match, NSMatchingFlags flags, BOOL *stop){
    [MyParserClass parserWithResponse:[aString substringWithRange:match.range] delegate:self andRequest:request];
}];

任何有关如何使用RegexKit做同样事情的帮助将不胜感激。

编辑: 让它以这种方式工作:

NSString *aString = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];
NSString *regex = @"(\\{.*?\\})";
NSArray *matches = [aString arrayOfCaptureComponentsMatchedByRegex:regex];
for (NSArray *match in matches) {
    [MyParserClass parserWithResponse:[match lastObject] delegate:self andRequest:request];
}

希望有一天它会帮助某人:)

1 个答案:

答案 0 :(得分:3)

以这种方式工作:

NSString *aString = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];
NSString *regex = @"(\\{.*?\\})";
NSArray *matches = [aString arrayOfCaptureComponentsMatchedByRegex:regex];
for (NSArray *match in matches) {
    [MyParserClass parserWithResponse:[match lastObject] delegate:self andRequest:request];
}

希望有一天它会帮助某人:)