NSPredicate 和正则表达式
Posted
技术标签:
【中文标题】NSPredicate 和正则表达式【英文标题】:NSPredicate and Regex 【发布时间】:2010-03-16 23:18:42 【问题描述】:有人可以帮助我将 Regex 与 NSPredicate 一起使用吗?
NSString *regex = @"(?:[A-Za-z0-9])";
NSPredicate *pred = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", regex];
if ([pred evaluateWithObject:mystring])
//do something
使用 mystring 测试上述内容 - qstring123 似乎不起作用。我期待它进入 if 条件,因为它应该与正则表达式匹配。
此外,我需要一个允许逗号和空格的字母数字正则表达式。
这行得通吗?
@"(?:[A-Za-z0-9])*(?:,[A-sa-z0-9)*(?:\s[A-sa-s0-9])"
请帮忙。
【问题讨论】:
【参考方案1】:根据我的实验,它会尝试将正则表达式与整个字符串进行匹配,并且不会在字符串内部进行匹配。
因此,正则表达式 [a-zA-Z0-9]+
有效,但 [a-zA-Z0-9]
无效。
考虑到这一点,您可能需要重新设计逗号匹配谓词,或使用功能更全面的正则表达式解决方案,例如令人惊叹的 RegexKit and RegexKitLite。
【讨论】:
duh' 我最后错过了 +。我实际上使用了 * 并且它有效。有什么区别?*
匹配 0 次或多次,+
匹配 1 次或多次。以上是关于NSPredicate 和正则表达式的主要内容,如果未能解决你的问题,请参考以下文章