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

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

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到字符串的结尾)。知道我的正则表达式有什么问题吗?

最佳答案

您的表达式绝对没有错-碰巧第一个匹配项覆盖了整个字符串。

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

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

关于ios - 正则表达式返回整个字符串iOS NSRegularExpression,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/39380920/

10-09 16:17