【发布时间】:2015-07-14 19:59:17
【问题描述】:
考虑以下数组:
NSArray *dataValues = @[@"Foo[0]", @"Foo[1].bar"];
以及以下正则表达式模式、谓词和预期输出:
NSString *pattern = @"Foo[0]";
NSPredicate *predicate = [NSPredicate predicateWithFormat: @"SELF BEGINSWITH[cd] %@", pattern];
NSArray *results = [dataValues filteredArrayUsingPredicate: predicate];
NSLog(@"matches = %ld", (long)results.count);
这会按预期在控制台中打印1。如果我们将模式更改为:
NSString *pattern = @"Foo\\[[0-9]\\]";
我希望这会在控制台中打印2,但它会打印0。我已经对外部方括号进行了双重转义,以允许对其进行解析,并希望找到括号内具有数字 0 到 9 的字符串以匹配此表达式。
我已经根据以下网站检查了正则表达式,它确实可以正常工作:
我在针对 iOS 8.4 iPhone 6 Plus 模拟器运行的 Xcode(6.4、6E35b)中没有警告/错误,但为什么我的正则表达式没有按预期过滤?
【问题讨论】:
标签: ios regex nspredicate