Прямо перед концом в вашем регулярном выражении есть "]", что, вероятно, вызывает проблему.Вам также нужно использовать четыре слеша, чтобы соответствовать слешу во входной строке.(Удвойте его, чтобы экранировать в строке C, а затем еще раз, чтобы избежать в регулярном выражении)Я бы предложил две вещи.Сначала передайте что-то в параметре error и посмотрите на него в отладчике.Во-вторых, я не большой поклонник выражений «lookahead / lookbehind».Я думаю, что этот стиль более читабелен:
NSString *regexStr = @"href=\"\\/functions\\?=(.+?)\\\\x26amp";
NSError *error;
NSRegularExpression *testRegex = [NSRegularExpression regularExpressionWithPattern:regexStr options:0 error:&error];
if( testRegex == nil ) NSLog( @"Error making regex: %@", error );
NSTextCheckingResult *result = [testRegex firstMatchInString:test options:0 range:NSMakeRange(0, [test length])];
NSRange range = [result rangeAtIndex:1];