首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >NSRegularExpression崩溃

NSRegularExpression崩溃
EN

Stack Overflow用户
提问于 2014-10-03 01:48:04
回答 1查看 2.8K关注 0票数 3

我使用NSRegularExpression从HTML中提取图像URL。但是,当尝试实际使用它时,我会得到以下错误:

由于“NSInvalidArgumentException”异常而终止应用程序,原因:“* enumerateMatchesInString:options:range:usingBlock::-NSRegularExpression -NSRegularExpression 0参数”

我看过像这样的其他堆栈溢出的答案,但是这个问题使用的是NSMatchingOption,而我不使用,并且这个答案没有给出关于我的情况有什么问题的信息。

下面是正在崩溃的代码:

代码语言:javascript
复制
NSRegularExpression *regex = [NSRegularExpression regularExpressionWithPattern:@"(<img\\s[\\s\\S]*?src\\s*?=\\s*?['\"](.*?)['\"][\\s\\S]*?>)+?" options:NSRegularExpressionCaseInsensitive error:nil];
NSString *source = [NSString stringWithContentsOfURL:[NSURL URLWithString:object[@"link"]] encoding:NSUTF8StringEncoding error:nil];

NSArray *imageResults = [regex matchesInString:source options:0 range:NSMakeRange(0, source.length)];
NSURL *link = [imageResults.firstObject URL];
UIImage *img = [UIImage imageWithData:[NSData dataWithContentsOfURL:link]];
if (img)
{
    [self.images setObject:img forKey:object[@"link"]];
    dispatch_async(dispatch_get_main_queue(), ^{
        cell.imageView.image = img;
        [cell layoutSubviews];
    });
}

崩溃本身发生在实例化imageResults的行上。

有人知道这个代码有什么问题吗?

EN

回答 1

Stack Overflow用户

发布于 2014-10-03 02:58:38

有一个问题:matchesInString:source返回一个NSTextCheckingResults数组。

例如,必须添加错误检查:

代码语言:javascript
复制
NSString *regExp = @"<img\\s+src=[\"']([^\"']+)";
NSError *error;
NSRegularExpression *regex = [NSRegularExpression regularExpressionWithPattern:regExp options:NSRegularExpressionCaseInsensitive error:&error];

NSString *source = @"leading<img src=\"news.google.com/news/…\" alt=\"Smiley face\">more";

NSArray *matchResults = [regex matchesInString:source options:0 range:NSMakeRange(0, source.length)];
NSTextCheckingResult *result0 = matchResults[0];
NSRange imgRange = [result0 rangeAtIndex:1];
NSLog(@"imgRange: %@, '%@'", NSStringFromRange(imgRange), [source substringWithRange:imgRange]);

输出:

imgRange:{17,22},'news.google.com/news/…‘

见: ICU用户指南正则表达式

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26172184

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档