Строка регулярного выражения для соответствия вызову функции 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 ответ
Вам нужно использовать
@"^-[^{]+\\{"
Шаблон соответствует:
^
- начало строки - -
- дефис - [^{]+
- один или несколько символов, кроме {
- \\{
- один буквальный {
голец.