Поиск через 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