用正则表达式过滤出html中得 img标签,并且把URL链接给取出来


最近做项目要处理html数据,其中是过滤出当中的图片,网上找了很多办法都不是很好用,发现用正则可以实现这个需求,有错误欢迎大家提出,共同讨论写正则的方法,下面是实现代码。


+ (NSArray *)filterTheImgUrlArrFromfahterHtml:(NSString *)html{

    //<(img|IMG)[^\<\>]*>找img标签的正则


    NSString *ss = @"<(img|IMG)[^\\<\\>]*>";//img标签的正则表达式

    NSRegularExpression *pre = [[NSRegularExpression alloc] initWithPattern:ss options:0 error:nil];
    
    NSArray *arr = [pre matchesInString:html options:NSMatchingReportProgress range:NSMakeRange(0, html.length)];//这个方法匹配正则,找到符合的结果返回数组集合,返回的类型是NSTextCheckingResult下面会提到。

    NSMutableArray *mutArr = [NSMutableArray arrayWithCapacity:1];

    NSLog(@"---%@",arr);

    for (NSTextCheckingResult *match in arr) {

        NSRange matchRange = [match range];//返回的是每个imgb标签的位置

        NSString *imgDivStr = [html substringWithRange:matchRange];//根据位置找对应img标签

        imgDivStr = [imgDivStr stringByReplacingOccurrencesOfString:@" " withString:@""];此处我为了找出图片URL过滤掉空格

        NSString *imgUrl = [[imgDivStr componentsSeparatedByString:@"src=\""] lastObject];

        imgUrl = [[imgUrl componentsSeparatedByString:@"\""] firstObject];

        [mutArr addObject:imgUrl];
        
    }
    NSLog(@"%@",mutArr);
    return [NSArray arrayWithArray:mutArr];
}


你可能感兴趣的:(用正则表达式过滤出html中得 img标签,并且把URL链接给取出来)