1

我有以下 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];
4

2 回答 2

1

虽然标题对答案不公平,但问题NSRegularExpression validate email提供了一个有用的在线正则表达式检查器的链接。

我的感觉是,您的示例中的正则表达式中的 \n 字符有问题。

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

    NSArray* matches = [regex matchesInString:string
                                      options:0
                                        range:NSMakeRange(0, [string length])];
    for (NSTextCheckingResult *match in matches) {
        // per match processing
    }
于 2012-06-23T00:33:01.890 回答
0

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

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

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

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

它工作正常,返回“8”。

于 2012-06-23T07:41:50.453 回答