2
이 문자열에서 가져 오려고합니다. 5556007503140005 두 문자열. "555600750314"및 "0005"대상 -c에서 Regexp 일치 그룹이 작동하지 않습니다.
저는 정규 표현식 도구에서 잘 작동하는 정규 표현식 ^([a-z0-9]*)([0-9]{4})$
을 사용하고 있습니다. 그러나이 코드를 내 코드에 사용할 때는 1 개만 찾습니다.
이
코드-(NSDictionary *)parse_barcode:(NSString *)barcode {
NSString *regexp = @"^([a-z0-9]*)([0-9]{4})$";
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"SELF MATCHES %@",regexp];
if ([predicate evaluateWithObject:barcode]) {
NSError *error;
NSRegularExpression *regular_exp = [NSRegularExpression regularExpressionWithPattern:regexp options:0 error:&error];
NSArray *matches = [regular_exp matchesInString:barcode options:0 range:NSMakeRange(0, [barcode length])];
for (NSTextCheckingResult *match in matches) {
NSLog(@"match %@ :%@",[barcode substringWithRange:[match range]], match);
}
}
return nil;
}
입니다 그러나 경기는, 당신은 단지 올바르게 인쇄되지 않는 경우 항상 당신이 바로 그 일치를 얻을 전체 문자열 (바코드)
감사 :이 같은 각 그룹에 대해
rangeAtIndex:
를 호출 한 후 개별 그룹 (괄호 안에 즉 섹션)을 얻을 수numberOfRanges
를 사용합니다. –