NSRegularExpression搜索未知值

时间:2012-08-25 00:18:55

标签: iphone ios regex

所以我正在开发一个iPhone应用程序,它会拍摄一些文字的图片,图片会被OCR发送并发回给我,然后我使用正则表达式来搜索字符串以获得双倍的值其中xxxx.xx。

NSRegularExpression *regex = [NSRegularExpression
                              regularExpressionWithPattern:@"\\d?\\d?\\d?\\d?\\.\\d?\\d?"
                              options:0
                              error:&error];

NSRange range   = [regex rangeOfFirstMatchInString:result
                                           options:0
                                             range:NSMakeRange(0, [result length])];

if([result length] > 0)
{
    NSString *subString = [result substringWithRange:range];

    double r = [subString doubleValue];

现在它正在按我的意愿工作,但它只获得它的第一个数字。可能存在不确定数量的双打,我需要获得最大的双打。最好的方法是什么?

1 个答案:

答案 0 :(得分:1)

使用matchesInString:options:range:而不是rangeOfFirstMatchInString。这将为您提供一组NSTextCheckingResult对象,您可以从中提取范围。

NSRegularExpression *regex = [NSRegularExpression
                                   regularExpressionWithPattern:@"\\d?\\d?\\d?\\d?\\.\\d?\\d?"
                                   options:0
                                   error:&error];
    NSArray *arr = [regex matchesInString:string options:NSMatchingReportCompletion range:NSMakeRange(0,string.length)];
    for (NSTextCheckingResult *obj in arr) {
        double r = [[string substringWithRange:obj.range] doubleValue];
        NSLog(@"%f",r);
    }