Если я правильно понял вашу ситуацию, вам нужно проанализировать foo
, bar
и baz
из приведенной выше строки. Приведенный ниже код сделает именно это и вернет foo
, bar
и baz
в массиве.
Как вы увидите в коде, мы подбираем слово и открывающую скобку, а затем программно обрезаем скобки. Возможно, есть и более подходящее регулярное выражение, которое не требует обрезки, но я не могу заставить это работать с NSRegularExpression .
NSString *text = @"(foo('Class 0')bar('Class 1')baz('Class 2')";
NSRegularExpression *regex = [NSRegularExpression regularExpressionWithPattern:@"[a-z]+[\(]"
options:NSRegularExpressionCaseInsensitive
error:nil];
NSMutableArray *output = [[NSMutableArray alloc] init];
[regex enumerateMatchesInString:text
options:0
range:NSMakeRange(0, [text length])
usingBlock:^(NSTextCheckingResult * _Nullable result, NSMatchingFlags flags, BOOL * _Nonnull stop) {
NSString *rawMatch = [text substringWithRange:result.range];
NSString *trimmed = [rawMatch substringToIndex:(rawMatch.length - 1)];
[output addObject:trimmed];
}];
Чтобы получить строку, подобную той, которую вы упомянули в комментарии выше, просто используйте
NSString *finalString = [output componentsJoinedByString:@" "];