Objective c中的正则表达式,用于在双引号之间提取数据

时间:2015-01-05 12:01:26

标签: objective-c macos cocoa

大家都需要帮助在目标c中创建一个正则表达式,用于在双引号之间提取数据

“大家好”,“需要,帮忙”,“有”,“一个”,“正则表达”

所以我需要这个

您好,大家 需要帮助

一 正则表达式

在一个数组中。请为此建议一个解决方案。谢谢你

1 个答案:

答案 0 :(得分:1)

对于一个简单的解决方案,您可以执行以下操作,使用"捕获括号"捕获引号之间的所有内容:

NSError *error;
NSRegularExpression *regex = [[NSRegularExpression alloc] initWithPattern:@"\"(.*?)\"" options:0 error:&error];
NSAssert(regex, @"regex error: %@", error);

[regex enumerateMatchesInString:string options:0 range:NSMakeRange(0, [string length]) usingBlock:^(NSTextCheckingResult *result, NSMatchingFlags flags, BOOL *stop) {
    NSRange range = [result rangeAtIndex:1];
    NSString *found = [string substringWithRange:range];
    // do something with `found`
}];

如果你想处理使用反斜杠转义的引号的字符串值,你也可以使用负面的后置断言,例如:

NSRegularExpression *regex = [[NSRegularExpression alloc] initWithPattern:@"\"(.*?)(?<!\\\\)\"" options:0 error:&error];

即使这并不完美(如果反斜杠逃脱角色本身就逃脱了怎么办),但也许这足以让你在没有迷失在老鼠的正则表达式中迷失。