理解为什么NSPredicate中的正则表达式在它应该的时候不起作用

时间:2018-01-17 20:25:09

标签: objective-c regex nspredicate

我有一个regex我试图测试,似乎根据ICU specs它应该匹配:

NSString *s = @"Asterisk 39 - S*W*A*G Geo-Art";
NSString *re = @".*Geo";
NSPredicate *p = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", re];
NSLog(@"Match: %@", [p evaluateWithObject:s] ? @"YES" : @"NO");

评估为

有没有理由为什么它似乎不应该进行评估呢? https://regex101.com/r/urbepW/1

1 个答案:

答案 0 :(得分:0)

基于Predicate Programming Guide中的示例,看起来MATCHES要求regexp匹配整个字符串,而不仅仅是其中的一部分。因此,您需要在开头和结尾设置.*以匹配字符串中的任何位置。

NSString *re = @".*Geo.*";