正则表达式返回整个字符串iOS NSRegularExpression

时间:2016-09-08 00:37:12

标签: ios regex nsregularexpression

我似乎无法让这个工作。我正在关注苹果文档。

我有一个像这样的示例字符串:

NSString * testString = @"Server Error -4";

我有一个正则表达式如下:

NSRegularExpression *regex = [NSRegularExpression regularExpressionWithPattern:@"Server\\sError\\s(-?\\d+)" options:NSRegularExpressionCaseInsensitive error:&error];

当我这样做时:

[testString substringWithRange:[regex rangeOfFirstMatchInString:testString options:kNilOptions range:NSMakeRange(0, testString.length)]];

我收回整个字符串。 (即,范围匹配从0到字符串的结尾)。我的正则表达式有什么问题吗?

1 个答案:

答案 0 :(得分:1)

你的表达绝对没有错 - 只是第一场比赛覆盖了整个字符串。

从表达式的结构看,您想要做的是提取匹配的第一个捕获组

NSTextCheckingResult *match = [regex firstMatchInString:testString
               options:0
                 range:NSMakeRange(0, [testString length])];
NSRange range = [match rangeAtIndex:1];
NSString *errorCode = [testString substringWithRange:matchRange];