Как я вытащил все главы из этого 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:\[\"(.*?)\"\]