html src regexp iOS

时间:2013-03-09 16:55:53

标签: ios objective-c regex

需要一些关于这个简单正则表达式的提示。

用于从<中提取src的Regexp和目标字符串代码img src =“...”/>

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;

2 个答案:

答案 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=\"(.*?)\""

表达你的意思。