试图找到比RegEX更快的方法来在NSString中查找URL ...任何想法?

Eth*_*len 2 iphone xcode cocoa-touch objective-c ios

我有一个NSStringHTML页面,长度为37014个字符,其中散布着大约20个URL.我使用此代码查找URL并将它们放在NSArray:

NSRegularExpression *regex = [NSRegularExpression regularExpressionWithPattern:@"(?:([^:/?#]+):)?(?://([^/?#]*))?([^?#]*\\.(?:jpg|gif|png))(?:\\?([^#]*))?(?:#(.*))?"
                                                                       options:NSRegularExpressionCaseInsensitive
                                                                         error:&error];
NSArray *matches = [regex matchesInString:final
                                  options:0
                                    range:NSMakeRange(0, [final length])];
Run Code Online (Sandbox Code Playgroud)

问题是,即使在iPhone 4S上,代码也需要5秒钟才能执行.这对于一个页面来说太慢了......我需要浏览20个HTML页面!

有更快的方法吗?也许NSScanner还是NSRange?有人有什么创意吗?

Amy*_*all 8

看看NSDataDetectorNSTextCheckingTypeLink.