NSRegularExpression的numberOfMatchesInString总是返回一个!
问题描述:
我有以下代码:NSRegularExpression的numberOfMatchesInString总是返回一个!
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的的文本(我知道这是不是一个很好的正则表达式)的数目,但numberOfMatchesInString总是返回1,而它应该返回3上面的代码。
有人能告诉我上面的代码有什么问题吗?
干杯,
答
只有一个比赛,因为你的正则表达式匹配的第一个http://
和.*
“吃”的字符串的其余部分。
为什么不寻找更多的东西一样:
http://
,或者如果你想捕捉每一个URL完全,像:
http://[^ ]*
此后意味着搜索任何内容HTTP:/ /那不是空间。
你应该真的看看通过某种正则表达式指导阅读。
这解释了很多。我真的需要阅读更多关于正则表达式的知识。谢谢肯德尔,你是最棒的。 – Motasim 2010-08-02 05:26:24
Mota:更好的办法是使用John Gruber的URL匹配正则表达式(假设它适用于NSRegularExpression)http://daringfireball.net/2010/07/improved_regex_for_matching_urls或Stephen Holt的AutoHyperlinks框架:https://bitbucket.org/sholt/autohyperlinks2/wiki /主页 – 2010-08-02 06:08:09
我想提到的是,尽管如果他只是有一系列空格分隔的URL,更简单的方法将会便宜得多。 想想吧,如果是这样的话,他真的应该只使用componentsSeperatedByString – 2010-08-02 16:19:40