Pesquisar por NSString usando Expressão Regular

Como eu poderia pesquisar / enumerar através de um NSString usando uma expressão regular?

Uma expressão regular como: /(NS|UI)+(\w+)/g .

Você precisa usar a class NSRegularExpression .

Exemplo inspirado na documentação:

 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 }]; 

Se você quer apenas combinar algum padrão em string, existe uma maneira simples de testar o Regular Expression com NSString :

 NSString *string = @"Telecommunication"; if ([string rangeOfString:@"comm" options:NSRegularExpressionSearch].location != NSNotFound) NSLog(@"Got it"); else NSLog(@"No luck"); 

Note, muitas vezes você vai querer …

 if ([string rangeOfString:@"cOMm" options:NSRegularExpressionSearch|NSCaseInsensitiveSearch].location != NSNotFound) NSLog(@"yes match"); 

No Swift você pode escrever código como este …

Swift 2

  let string = "Telecommunication" if string.rangeOfString("cOMm", options: (NSStringCompareOptions.RegularExpressionSearch | NSStringCompareOptions.CaseInsensitiveSearch)) != nil { print("Got it") } else { print("No luck") } 

Swift 4

  let string = "Telecommunication" if string.range(of: "cOMm", options: [.regularExpression, caseInsensitive]) != nil { print("Got it") } else { print("No luck") } 

Por favor note que o rangeOfString(_:,options:) e o range(of:options:) do Swift 4 range(of:options:) retornam Range? Swift 2 Range? que retorna nil se a pesquisa falhou