我找不到任何专门解决如何在 Stack Overflow 或 Google 上的谓词中找到方括号的内容,所以我想我会在这里发布它,看看是否有人可以解释解决方案。
NSString *mstr = @"fasd[981db7007771ffa3]dfaads";
NSString *test =@".*\\[[0-9,a-f]{16}\\].*";
//NSPredicate *pred = [NSPredicate predicateWithFormat:@"SELF MATCHES '.*\\\\[[0-9,a-f]{16}\\\\].*'"]; //works
NSPredicate *pred = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", test];
if ([pred evaluateWithObject:mstr]) {
NSLog(@"Yes");
}
似乎当转义括号时,你需要四个反斜杠,但如果你把它放在一个字符串中,你只需要两个。不清楚为什么会这样。