我有一個數據數組,我想從中提取只包含數字和數字的行。對行的例子: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