我正在尝试使用以下模式。
NSError *error = nil;
NSRegularExpression *regex = [NSRegularExpression regularExpressionWithPattern:@"#{{[[[0-9]{1,10}-[0-9]{1,10}-[0-9]{1,10}]]}}" options:0 error:&error];
NSString *originalMesssage = @"test #{{[[8-16-5]]}}";
NSArray *arrResults = [regex matchesInString:originalMesssage options:NSRegularExpressionCaseInsensitive
range:NSMakeRange(0, [originalMesssage length])];
在使用上述正则表达式过滤后,我希望“8-16-5”作为返回值。显然问题出在“{}”和“[]”字符上。我用http://regexpal.com/测试了相同的模式,它在那里工作正常。1)我应该在上面的代码中使用任何通配符吗?
以下是最终对我有用的代码。
NSError *error = nil;
NSRegularExpression *regex = [NSRegularExpression regularExpressionWithPattern:@"#\\{\\{\\[\\[[0-9]{1,10}-[0-9]{1,10}-[0-9]{1,10}\\]\\]\\}\\}" options:0 error:&error];
NSString *originalMesssage = @"test #{{[[8-16-5]]}}";
NSArray *arrResults = [regex matchesInString:originalMesssage options:NSRegularExpressionCaseInsensitive
range:NSMakeRange(0, [originalMesssage length])];
NSTextCheckingResult *match = [arrResults objectAtIndex:0];
NSRange matchRange = [match range];
NSString *resultString = [originalMesssage substringWithRange:matchRange];