需要一些关于这个简单正则表达式的提示。
NSString *imgTag = @"<img alt=\"\" src=\"/sites/default/files/mypic.gif\" style=\"width: 300px; height: 195px;\" />";
NSRegularExpression *a = [NSRegularExpression regularExpressionWithPattern:@"src=\"(.*)\"" options:NSRegularExpressionCaseInsensitive error:nil];
不确定它是否与options
NSTextCheckingResult *matches = [a firstMatchInString:imgTag options:NSMatchingReportProgress range:NSMakeRange(0, [imgTag length])];
NSRange matchRange = [matches range];
NSString *src = [imgTag substringWithRange:matchRange];
NSLog(@"%s, %@", __PRETTY_FUNCTION__, src);
现在输出是意料之外的,因为它不仅返回组,还返回结束标记之后的所有内容。
/sites/default/files/mypic.gif" style="width: 300px; height: 195px;
答案 0 :(得分:2)
它基本上匹配从第一个"
到最后一个"
的所有内容。
你应该使用非贪婪的算子?
,“Matches 0 or more times. Matches as few times as possible.”。
E.g:
NSRegularExpression *a = [NSRegularExpression regularExpressionWithPattern:@"src=\"(.*?)\"" options:NSRegularExpressionCaseInsensitive error:nil];
答案 1 :(得分:1)
你的正则表达式很贪婪。
尝试:
@"src=\"(.*?)\""
表达你的意思。