수색…


통사론

  • NSRegularExpression * regex = [NSRegularExpression regularExpressionWithPattern : PATTERN 옵션 : OPTIONS 오류 : 오류];
  • NSArray <NSTextCheckingResult *> * results = [정규식 matchesInString : STRING 옵션 : OPTIONS 범위 : RANGE_IN_STRING];
  • NSInteger numberOfMatches = [정규식 numberOfMatchesInString : STRING 옵션 : OPTIONS 범위 : RANGE_IN_STRING];

문자열의 모든 숫자 찾기

NSString *testString = @"There are 42 sheep and 8672 cows.";
NSError *error = nil;
NSRegularExpression *regex = [NSRegularExpression regularExpressionWithPattern:@"(\\d+)"
                                                                       options:NSRegularExpressionCaseInsensitive
                                                                         error:&error];

NSArray *matches = [regex matchesInString:testString
                                  options:0
                                    range:NSMakeRange(0, testString.length)];

for (NSTextCheckingResult *matchResult in matches) {
    NSString* match = [testString substringWithRange:matchResult.range];
    NSLog(@"match: %@", match);
}

결과는 match: 42match: 8672 .

문자열이 패턴과 일치하는지 확인

NSString *testString1 = @"(555) 123-5678";
NSString *testString2 = @"not a phone number";

NSError *error = nil;
NSRegularExpression *regex = [NSRegularExpression regularExpressionWithPattern:@"^\\(\\d{3}\\) \\d{3}\\-\\d{4}$"
                                                                       options:NSRegularExpressionCaseInsensitive error:&error];

NSInteger result1 = [regex numberOfMatchesInString:testString1 options:0 range:NSMakeRange(0, testString1.length)];
NSInteger result2 = [regex numberOfMatchesInString:testString2 options:0 range:NSMakeRange(0, testString2.length)];

NSLog(@"Is string 1 a phone number? %@", result1 > 0 ? @"YES" : @"NO");
NSLog(@"Is string 2 a phone number? %@", result2 > 0 ? @"YES" : @"NO");

출력 결과 첫 번째 문자열이 전화 번호이고 두 번째 문자열이 아닌 것으로 나타납니다.



Modified text is an extract of the original Stack Overflow Documentation
아래 라이선스 CC BY-SA 3.0
와 제휴하지 않음 Stack Overflow