我似乎无法让这个工作。我正在关注苹果文档。
我有一个像这样的示例字符串:
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到字符串的结尾)。我的正则表达式有什么问题吗?
答案 0 :(得分:1)
你的表达绝对没有错 - 只是第一场比赛覆盖了整个字符串。
从表达式的结构看,您想要做的是提取匹配的第一个捕获组:
NSTextCheckingResult *match = [regex firstMatchInString:testString
options:0
range:NSMakeRange(0, [testString length])];
NSRange range = [match rangeAtIndex:1];
NSString *errorCode = [testString substringWithRange:matchRange];