代码之家  ›  专栏  ›  技术社区  ›  Zen_silence

按组存储regexkitlite匹配项,而不是发生

  •  0
  • Zen_silence  · 技术社区  · 16 年前

    我不确定是否有人可以这样做,但如果你问我是否正在使用RegexKitlite创建一个iPhone应用程序,这不会有什么坏处。我特别使用regex库来解析一些html。我的问题是一个正则表达式,比如 @"<a href=([^>]*)>([^>]*) - " 方括号之间的每个匹配项都可以使用

        NSString *regexString = @"<a href=([^>]*)>([^>]*) - ";
        NSArray  *matchArray = [response arrayOfCaptureComponentsMatchedByRegex:regexString];
    

    这会将匹配项存储为:

       Array ( Array(ENTIRE_MATCH1, FIRST_BRACKETS1, SECOND_BRACKETS1), 
                Array(ENTIRE_MATCH2, FIRST_BRACKETS2, SECOND_BRACKETS2),
                Array(ENTIRE_MATCH3, FIRST_BRACKETS3, SECOND_BRACKETS3));
    

    是否有一个命令允许be捕获这样的匹配项?

       Array ( Array(ENTIRE_MATCH1, ENTIRE_MATCH2, ENTIRE_MATCH3), 
                Array(FIRST_BRACKETS1, FIRST_BRACKETS2, FIRST_BRACKETS3),
                Array(SECOND_BRACKET1, SECOND_BRACKET2, SECOND_BRACKET3));
    

    我知道使用for循环或for each循环可以很容易地做到这一点,但我想知道regexkitlite库中是否有函数。

    提前谢谢你,

    零沉默

    1 回复  |  直到 16 年前
        1
  •  0
  •   Zen_silence    16 年前

    如果其他人需要一个函数来将一个组复制到另一个数组中,这个外观可以做到这一点,我仍然在寻找一个更好的解决方案,如果有人有一个。

        group = [[NSMutableArray alloc] initWithCapacity:[matchArray count]];
        for (int i = 0; i < [matchArray count]; i++) {
            NSString *temp = [[matchArray objectAtIndex: i] objectAtIndex: 2];
            [group addObject: temp];
        }