This answer is specific to the question and URL provided in a comment to the previous answer. It assumes that there are multiple image URLs and all are wanted.
Note 1: The html encoding is NSISOLatin1StringEncoding
.
Note 2: The RegExp was changes to handle ordering of "src=".
NSString *urString = @"http://news.google.com/news/url?sa=t&fd=R&ct2=us&usg=AFQjCNHVXXEN0DG2pblU2_FBFfeS3klRVw&clid=c3a7d30bb8a4878e06b80cf16b898331&cid=52778623354837&ei=ugAvVMDVIsLGwAHPtYG4CA&url=http://espn.go.com/new-york/nba/story/_/id/11634537/cleveland-cavaliers-open-regularly-resting-lebron-james-season";
NSURL *url = [NSURL URLWithString:urString];
NSError *error;
NSString *source = [NSString stringWithContentsOfURL:url encoding:NSISOLatin1StringEncoding error:&error];
if (source.length){
NSString *regExp = @"<img.*?\\s+src=[\"']([^\"']+)";
NSRegularExpression *regex = [NSRegularExpression regularExpressionWithPattern:regExp options:NSRegularExpressionCaseInsensitive error:&error];
NSRange marchRange = NSMakeRange(0, source.length);
[regex enumerateMatchesInString:source
options:0
range:marchRange
usingBlock:^(NSTextCheckingResult *result, NSMatchingFlags NSRegularExpressionCaseInsensitive, BOOL *stop) {
NSRange imgRange = [result rangeAtIndex:1];
NSLog(@"imgRange: %@, '%@'", NSStringFromRange(imgRange), [source substringWithRange:imgRange]);
}];
}
else {
Display(@"error: %@", error);
}
Output:
imgRange: {18793, 68}, 'http://a.espncdn.com/espncitysites/newyork/prod/assets/sub_ny_r3.png'
imgRange: {18793, 68}, 'http://a.espncdn.com/espncitysites/newyork/prod/assets/sub_ny_r3.png'
imgRange: {19784, 172}, 'http://ad.Doubleclick.net/ad/espn.local.newyork.com/nba;pgtyp=story;sp=nba;tm=cle;pl=1015;pl=1966;pl=2028618;pl=215;pl=2419;objid=11634537;col=mcmenamin_dave;sz=150x45,1x1;'
imgRange: {22162, 182}, 'http://ad.Doubleclick.net/ad/espn.local.newyork.com/nba;pgtyp=story;sp=nba;tm=cle;pl=1015;pl=1966;pl=2028618;pl=215;pl=2419;objid=11634537;col=mcmenamin_dave;sz=1280x946,200x800,1x1;'
imgRange: {23470, 186}, 'http://ad.Doubleclick.net/ad/espn.local.newyork.com/nba;pgtyp=story;sp=nba;tm=cle;pl=1015;pl=1966;pl=2028618;pl=215;pl=2419;objid=11634537;col=mcmenamin_dave;sz=728x90,970x66,924x50,1x1;'
imgRange: {29706, 36}, 'http://a.espncdn.com/icons/in_15.png'
imgRange: {30352, 103}, 'http://a.espncdn.com/media/motion/2014/1003/dm_141003_nba_schwartz_bron/dm_141003_nba_schwartz_bron.jpg'
imgRange: {31339, 37}, 'http://a.espncdn.com/icons/video2.png'
imgRange: {34098, 65}, 'http://a.espncdn.com/photo/2014/1001/nba_a_lebron01jr_300x300.jpg'
imgRange: {35987, 55}, 'http://a.espncdn.com/i/columnists/windhorst_brian_m.jpg'
imgRange: {38249, 79}, 'http://a.espncdn.com/combiner/i?img=/photo/2014/0926/nba_a_james_mb_203x114.jpg'
imgRange: {41787, 36}, 'http://a.espncdn.com/icons/in_15.png'
imgRange: {42698, 87}, 'http://a.espncdn.com/combiner/i?img=%2fi%2fcolumnists%2fmcmenamin_dave_35.jpg&w=35&h=48'
imgRange: {48148, 68}, 'http://a.espncdn.com/photo/2014/1002/nba_garnett_wiggins_203x114.jpg'
imgRange: {48834, 33}, 'http://a.espncdn.com/icons/in.gif'
imgRange: {50157, 181}, 'http://ad.Doubleclick.net/ad/espn.local.newyork.com/nba;pgtyp=story;sp=nba;tm=cle;pl=1015;pl=1966;pl=2028618;pl=215;pl=2419;objid=11634537;col=mcmenamin_dave;sz=300x600,300x250,1x1;'
imgRange: {51105, 45}, '/photo/2014/1003/mlb_g_martinez_b1_110x62.jpg'
imgRange: {51801, 41}, '/photo/2014/1003/ny_u_geno2_js_110x62.jpg'
imgRange: {52491, 43}, '/photo/2014/1002/nhl_g_fleury_b3_110x62.jpg'
imgRange: {53201, 44}, '/photo/2014/1002/ny_g_betances_js_110x62.jpg'
imgRange: {53902, 42}, '/photo/2014/1003/ny_g_murphy_js_110x62.jpg'
imgRange: {54986, 66}, 'http://a.espncdn.com/i/Integrators/shop.lebron.welcome.300x100.jpg'