NSPredicate匹配未转义的撇号

时间:2014-02-05 15:19:23

标签: ios objective-c regex nspredicate

如果有任何未转义的撇号,我想检查NSString(json),但即使正则表达式正确,NSPredicate也找不到它。

这是我的代码:

NSString* regx = @"[^\\\\]'";
NSPredicate* p = [NSPredicate predicateWithFormat:@"SELF MATCHES %@",regx];
if([p evaluateWithObject:json]){
    //gotit
...

我知道有些撇号没有被转义,但NSPredicate却找不到它。

知道如何解决这个问题吗?

另外,如果我看一下json,我会看到撇号为\ u0027。

2 个答案:

答案 0 :(得分:0)

“SELF MATCHES ...”尝试匹配整个字符串,因此您必须使用正则表达式

NSString* regx = @".*[^\\\\]'.*";

可替换地:

NSString* regx = @"[^\\\\]'";
NSRange r = [json rangeOfString:regx options:NSRegularExpressionSearch];
if (r.location != NSNotfound) {
   …
}

但问题仍然是为什么这是必要的。 NSJSONSerialization应该处理 所有逃脱和引用正确。

答案 1 :(得分:0)

这是适用于我的正则表达式:

.*[^\\\\]\\\\u0027.*