Строка регулярного выражения для соответствия вызову функции Objective C

Я пытаюсь с помощью этой строки найти первую строку каждой функции в моем приложении, разработанном в Objective C: ^-[^{]+{.

Это отлично работает в поиске XCode Find>Regular Expression.

Но когда я пытаюсь использовать эту строку в следующей функции, функция всегда возвращает NULL.

- (void) putLogInFunctionCalls{

    NSString *string = @"- (void)setRepresentedObject:(id)representedObject {";
    NSError *error = nil;
    NSRegularExpression *regex = [NSRegularExpression regularExpressionWithPattern:@"^-[^{]+\{" options:NSRegularExpressionCaseInsensitive error:&error];

    NSString *modifiedString = [regex stringByReplacingMatchesInString:string options:0 range:NSMakeRange(0, [string length]) withTemplate:[NSString stringWithFormat:@"%@ DLOG()", string]];

    NSLog(@"%@", modifiedString);
}

Но это должно вернуться:

"- (void)setRepresentedObject:(id)representedObject { DLOG()"

Этот вопрос специфичен для определения начала функции Objective-C. Любой, кто пытается написать метакод в приложениях iOS/MacOS, разработанных в Objective-C, может столкнуться с этой проблемой и может найти ответ полезным. Ответ, помеченный как дубликат этого, является более общим.

1 ответ

Вам нужно использовать

@"^-[^{]+\\{"

Шаблон соответствует:

^ - начало строки - - - дефис - [^{]+ - один или несколько символов, кроме { - \\{ - один буквальный { голец.

Другие вопросы по тегам