【问题标题】:NSPredicate and RegexNSPredicate 和正则表达式
【发布时间】: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])"

请帮忙。

【问题讨论】:

    标签: objective-c regex nspredicate


    【解决方案1】:

    根据我的实验,它会尝试将正则表达式与整个字符串进行匹配,并且不会在字符串内部进行匹配。

    因此,正则表达式 [a-zA-Z0-9]+ 有效,但 [a-zA-Z0-9] 无效。

    考虑到这一点,您可能需要重新设计逗号匹配谓词,或使用功能更全面的正则表达式解决方案,例如令人惊叹的 RegexKit and RegexKitLite

    【讨论】:

    • duh' 我最后错过了 +。我实际上使用了 * 并且它有效。有什么区别?
    • * 匹配 0 次或多次,+ 匹配 1 次或多次。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-29
    • 1970-01-01
    • 2016-07-25
    相关资源
    最近更新 更多