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的主要内容,如果未能解决你的问题,请参考以下文章