NSPredicate和NSRegularExpression

str*_*ave 5 regex iphone core-data objective-c ipad

这应该很简单,但不想工作.我想使用使用NSRegularExpression的NSPredicate来获取CoreData.我想搜索myString或myString_10(10是任何可能的数字,例如myString_333).

这是我的代码:

NSString *regexString = [NSString stringWithFormat:@"%@_[0-9]+", value];
NSRegularExpression *regex = [NSRegularExpression regularExpressionWithPattern:regexString
                                                                           options:NSRegularExpressionSearch                                  
                                                                             error:&error];

NSPredicate *predicate = [NSPredicate predicateWithFormat:@"(label = %@) OR (label = %@)", value, regex];
Run Code Online (Sandbox Code Playgroud)

value是一个字符串,label是实体的键.

如果value是"New Project",则NSFetchRequest返回一个包含一个对象的数组,但是,我的模型中有两个标签("New Project"和"New Project_1")应该被提取.

我究竟做错了什么?

Joe*_*Joe 3

使用时,正则表达式需要是 NSString 或谓词的一部分。请参阅谓词编程指南中的正则表达式。尝试使用 MATCHES 代替 =regexStringregex。如果您有任何问题,可以参考ICU 正则表达式来获取模式。