使用NSRegularExpression从NSString中提取值

时间:2012-06-22 22:51:32

标签: ios regex nsregularexpression

我有以下NSString:

var param1=8;
var param2=4;
var param3=1;

我需要从中提取参数的值。我使用NSRegularExpression但无法使用它:

NSRegularExpression *regex = [NSRegularExpression regularExpressionWithPattern:@"var param1=(.*);\nvar param2=(.*);\nvar param3=(.*)" options:0 error:NULL];
NSTextCheckingResult *match = [regex firstMatchInString:string options:0 range:NSMakeRange(0, [string length])];
NSString *param1= [match rangeAtIndex:1];

2 个答案:

答案 0 :(得分:1)

虽然标题不符合答案,但问题NSRegularExpression validate email提供了一个有用的在线regex checker的链接。

我的感觉是你在你的例子中使用正则表达式中的\ n字符时遇到了麻烦。

我会考虑@"^var param[123]=\b(\w*)\b;"等表达式,它应该为您提供三个匹配项;你必须使用NSRegularExpression方法matchesInString而不是firstMatchInString,但你的循环应该非常简单:

    NSArray* matches = [regex matchesInString:string
                                      options:0
                                        range:NSMakeRange(0, [string length])];
    for (NSTextCheckingResult *match in matches) {
        // per match processing
    }

答案 1 :(得分:0)

首先,您将NSRange转换为NSString,最后一行应如下所示:

NSString *param1= [string substringWithRange:[match rangeAtIndex:1]];

其次,你的字符串可能有问题吗?在换行之前它可能有空格等。我测试过:

NSString *string = @"var param1=8;\n"
                    "var param2=4;\n"
                    "var param3=1;";

它工作正常,返回'8'。