Как я вытащил все главы из этого NSSting с помощью регулярного выражения RegEx?

Я пытаюсь вытянуть ЛЮБЫЕ символы из середины этой строки (как показано жирным шрифтом):

t_product_name: ["xxx yyy zzz 111 222 333"],

Вот код, который я пытаюсь, но он не работает для меня. Что я делаю не так с моим RegEx?

NSRegularExpression *regex = [NSRegularExpression regularExpressionWithPattern:@"t_product_name:[\"(.*)\"]" options:NSRegularExpressionCaseInsensitive error:&error];
[regex enumerateMatchesInString:html options:0 range:NSMakeRange(0, [html length]) usingBlock:^(NSTextCheckingResult *match, NSMatchingFlags flags, BOOL *stop){

   // detect
   NSString *insideString = [html substringWithRange:[match rangeAtIndex:1]];

   //print
   NSLog(@"t_product_name: %@", insideString); }];

2 ответа

Используйте отрицательный класс символов:

t_product_name:\["([^\"]+)"\]

Внутренняя часть гласит: сопоставляйте все, кроме двойной кавычки (ее не нужно экранировать в квадратных скобках, но нужно экранировать в строке), см. Демонстрацию на regex101.com.

Вы должны использовать ленивый квантификатор? как это и бежать [] двойные квадратные скобки.

Regex: t_product_name:\[\"(.*?)\"\]

Regex101 Demo

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