我有一个数据数组,我想从中提取只包含数字和数字的行。对行的例子:NSPredicate匹配除数字以外的任何内容
15 2, '',7,9,21
(在 '' 代表一个或多个空格)。
在这种情况下,我想仅提取15,7和9我使用谓词以下列方式:
NSString *pattern = @"[^0-9]";
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", pattern];
if (![predicate evaluateWithObject:myStringToMatch])
// Extract ...
我已经测试使用在线正则表达式测试仪我的图案,并发现[^ 0-9]除了数字0-9外其他都不匹配。但是,当我运行上面的代码时,它只匹配空格而不是例如+2,我很确定它应该这样做。只是为了澄清,myStringToMatch是一个NSString对象。
我不知道为什么它不符合我的模式。任何人都可以给我提示我做错了什么?
谢谢。
非常感谢。那么我可能误解了正则表达式验证器的输出。你能告诉我之前(^ [0-9])数字与内部([^ 0-9])之间的差异吗? – 2012-03-09 07:11:30
'^'作为第一个和'$'作为* whole * regex的最后一个字符被称为锚:http://www.regular-expressions.info/anchors.html。 '*'作为*字符类中的第一个字符是另一回事,它否定了类:'[a]'匹配单个字符'a',而'[^ a]'匹配除'a'之外的任何字符: http://www.regular-expressions.info/charclass.html – 2012-03-09 10:20:45
再次感谢。这清除了。 – 2012-03-09 11:36:53