Поиск через NSString с использованием регулярного выражения Как я могу искать/перечислять через NSString с помощью регулярного выражения? Регулярное выражение, такое как: /(NS|UI)+(\w+)/g. Ответ 1 Вам нужно использовать класс NSRegularExpression. Пример, вдохновленный документацией: NSString *yourString = @""; NSError *error = NULL; NSRegularExpression *regex = [NSRegularExpression regularExpressionWithPattern:@"(NS|UI)+(\\w+)" options:NSRegularExpressionCaseInsensitive error:&error]; [regex enumerateMatchesInString:yourString options:0 range:NSMakeRange(0, [yourString length]) usingBlock:^(NSTextCheckingResult *match, NSMatchingFlags flags, BOOL *stop){ // your code to handle matches here }]; Ответ 2 Если вы просто хотите сопоставить некоторый шаблон в строке, есть простой способ проверить регулярное выражение с помощью NSString: NSString *string = @"Telecommunication"; if ([string rangeOfString:@"comm" options:NSRegularExpressionSearch].location != NSNotFound) NSLog(@"Got it"); else NSLog(@"No luck"); Заметьте, часто вы захотите... if ([string rangeOfString:@"cOMm" options:NSRegularExpressionSearch|NSCaseInsensitiveSearch].location != NSNotFound) NSLog(@"yes match"); В Swift вы можете написать такой код... let string = "Telecommunication" if string.rangeOfString("cOMm", options: (NSStringCompareOptions.RegularExpressionSearch | NSStringCompareOptions.CaseInsensitiveSearch)) != nil { print("Got it"); } else { print("No luck"); } Обратите внимание, что rangeOfString(...) возвращает Range<String.Index>?, который возвращает nil, если поиск не прошел в Xcode 6.3.2
Ответ 1 Вам нужно использовать класс NSRegularExpression. Пример, вдохновленный документацией: NSString *yourString = @""; NSError *error = NULL; NSRegularExpression *regex = [NSRegularExpression regularExpressionWithPattern:@"(NS|UI)+(\\w+)" options:NSRegularExpressionCaseInsensitive error:&error]; [regex enumerateMatchesInString:yourString options:0 range:NSMakeRange(0, [yourString length]) usingBlock:^(NSTextCheckingResult *match, NSMatchingFlags flags, BOOL *stop){ // your code to handle matches here }];
Ответ 2 Если вы просто хотите сопоставить некоторый шаблон в строке, есть простой способ проверить регулярное выражение с помощью NSString: NSString *string = @"Telecommunication"; if ([string rangeOfString:@"comm" options:NSRegularExpressionSearch].location != NSNotFound) NSLog(@"Got it"); else NSLog(@"No luck"); Заметьте, часто вы захотите... if ([string rangeOfString:@"cOMm" options:NSRegularExpressionSearch|NSCaseInsensitiveSearch].location != NSNotFound) NSLog(@"yes match"); В Swift вы можете написать такой код... let string = "Telecommunication" if string.rangeOfString("cOMm", options: (NSStringCompareOptions.RegularExpressionSearch | NSStringCompareOptions.CaseInsensitiveSearch)) != nil { print("Got it"); } else { print("No luck"); } Обратите внимание, что rangeOfString(...) возвращает Range<String.Index>?, который возвращает nil, если поиск не прошел в Xcode 6.3.2