NSPredicate与数字匹配

Kas*_*nck 1 regex nspredicate ios

我有一个数据数组,我想从中提取包含数字和数字的行.行的示例:

15,+ 2,'',7,9,+ 21

(''代表一个或多个空格).

在这种情况下,我想只提取15,7和9.我使用谓词通过以下方式:

NSString *pattern = @"[^0-9]";
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", pattern];
if (![predicate evaluateWithObject:myStringToMatch])
// Extract ...
Run Code Online (Sandbox Code Playgroud)

我使用在线正则表达式测试器测试了我的模式,发现[^ 0-9]确实与数字0-9匹配.但是,当我运行上面的代码时,它只匹配空格而不是例如+2,我很确定它应该这样做.为了澄清,myStringToMatch是一个NSString对象.

我不知道为什么它与我的模式不符.谁能给我一个暗示我做错了什么?

谢谢.

Igo*_*hov 5

你正则表达式只匹配一个数字.如果要匹配仅包含数字和数字的行,则需要一个在包含非数字的行上匹配的正则表达式.

您可以使用以下正则表达式:^[0-9]+$.它匹配一行中的一个或多个(+)数字([0-9])而不是其他任何东西(锚定^$确保).

然后,不处理不匹配的行,而是仅处理执行以下操作的行:

if ([predicate evaluateWithObject:myStringToMatch])
// note the absence of negation operator
// Extract ...
Run Code Online (Sandbox Code Playgroud)