我有以下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];
答案 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'。