2015-06-25 5 views
0

Я пытаюсь получить подстроку, которая The access token provided is invalid изкак получить подстрока, используя регулярное выражение

Access to the requested resource path is unauthorized: v1/streaming/video/558489e46b66d1023309e1a1 [The access token provided is invalid] 

Что я делаю

NSError *err = nil; 
    NSRegularExpression *regex = [NSRegularExpression regularExpressionWithPattern:@"[(.*)]" options:0 error:&err]; 
    NSString *message = nil; 

    if (regex) { 
     NSTextCheckingResult *result = [regex firstMatchInString:(NSString*)error.userInfo[@"NSLocalizedDescription"] 
                 options:0 
                  range:NSMakeRange(0, ((NSString*)error.userInfo[@"NSLocalizedDescription"]).length)]; 

     if (result) { 
      NSRange range = [result rangeAtIndex:1]; 
      message = [((NSString*)error.userInfo[@"NSLocalizedDescription"]) substringWithRange:range]; 

     } 
    } 

Однако message равна нулю. Моя идея - поднять любые слова между []. Я думаю, что что-то не так с моим обычным, так как я использую [(.*)].

Есть ли у кого-нибудь какие-либо намеки на эту проблему.

ответ

0

ICU Руководство пользователя: Regular Expressions

Регулярное выражение: (?<= \\[)[^\\]]+(?=\\])

(?<= \\[) Look-за утверждение для [которые должны быть экранированы
[^\\]]+ Один или несколько символов не], которые должны быть экранированы
(?=\\]) Look- что необходимо избегать

NSString *string = @"Access to the requested resource path is unauthorized: v1/streaming/video/558489e46b66d1023309e1a1 [The access token provided is invalid]"; 
NSString *regex = @"(?<= \\[)[^\\]]+(?=\\])"; 
NSRange range = [string rangeOfString:regex options:NSRegularExpressionSearch]; 
NSLog(@"range: %@", NSStringFromRange(range)); 
NSLog(@"found: %@", [string substringWithRange:range]); 

Выход:

диапазон: {100, 36}
найдено: Маркер доступа при условии, недействительна

Смежные вопросы