NSPredicate 和 NSRegularExpression

Posted

技术标签:

【中文标题】NSPredicate 和 NSRegularExpression【英文标题】:NSPredicate and NSRegularExpression 【发布时间】:2011-07-13 19:29:40 【问题描述】:

这应该很简单,但它不想工作。我想使用使用 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];

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

如果值为“New Project”,则 NSFetchRequest 返回一个包含一个对象的数组,不过,我的模型中有两个标签(“New Project”和“New Project_1”)应该被获取。

我做错了什么?

【问题讨论】:

【参考方案1】:

使用时,正则表达式需要是 NSString 或谓词的一部分。见Regular Expressions in the Predicate Programming Guide。尝试使用 MATCHES 代替 = 和 regexString 代替 regex。如果您有任何问题,可以参考 ICU Regular Expressions 获取模式。

【讨论】:

我读过。我没有找到它说正则表达式需要成为谓词字符串的一部分的部分。请参阅该示例:***.com/questions/2458881/nspredicate-and-regex 我会编辑并重新措辞。我试图指出的问题是您使用的是NSRegularExpression 而不是NSString。您仍然可以使用 %@,但使用字符串。

以上是关于NSPredicate 和 NSRegularExpression的主要内容,如果未能解决你的问题,请参考以下文章

获取的属性和 NSPredicate

NSPredicate 和过滤

NSPredicate 同时使用 IN 和 LIKE

NSPredicate 和 NSRegularExpression

NSPredicate 用于多个对象和属性

为啥 NSPredicate 和 DateComponents 不起作用