Iphone NSRegularExpression';s numberOfMatchesInstalling始终返回一个!

Iphone NSRegularExpression';s numberOfMatchesInstalling始终返回一个!,iphone,objective-c,regex,Iphone,Objective C,Regex,我有以下代码: NSString *text = @"http://bit.ly/111 http://bit.ly/222 http://www.www.www"; NSRegularExpression *aLinkRegex = [NSRegularExpression regularExpressionWithPattern:@".*http://.*" options:NSRegularExpressionCaseInsensitive error:nil]; NSUInteger n

我有以下代码:

NSString *text = @"http://bit.ly/111 http://bit.ly/222 http://www.www.www";
NSRegularExpression *aLinkRegex = [NSRegularExpression regularExpressionWithPattern:@".*http://.*" options:NSRegularExpressionCaseInsensitive error:nil];
NSUInteger numberOfMatches = [aLinkRegex numberOfMatchesInString:text options:0 range:NSMakeRange(0, [text length])];
我想在文本中找到http的数量(我知道这不是一个好的正则表达式),但是NumberOfMatchesInstalling总是返回1,而在上面的代码中它应该返回3

有人能告诉我上面的代码有什么问题吗


干杯,

只有一个匹配项,因为正则表达式匹配第一个
http://
,而
*
将“吃掉”字符串的其余部分

为什么不搜索更像:

http://
或者,如果您试图完整捕获每个URL,则类似于:

http://[^ ]*
这意味着在http://之后搜索任何内容,这不是一个空格


您应该认真阅读一些正则表达式指南

这解释了很多。我真的需要读更多关于正则表达式的书。谢谢你,肯德尔,你是最棒的。莫塔:更好的办法是使用约翰·格鲁伯的URL匹配正则表达式(假设它与NSRegularExpression一起工作)或斯蒂芬·霍尔特的自动超链接框架:我要提到的是,尽管如果他只使用一系列空格分隔的URL,解析更简单的方法会便宜得多。仔细想想,如果是这样的话,他真的应该使用字符串操作的组件