我似乎无法使这个工作。我正在关注苹果文档。
我有一个像这样的示例字符串:
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/