使用這個命令行示例應用程序它工作得很好。
#import <Foundation/Foundation.h>
int main(int argc, const char * argv[])
{
@autoreleasepool {
NSArray *lines = @[ @"17% off etc.", @"2% off", @"off by 12%" ];
NSPredicate* test = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", @"^[0-9]{1,2}% off.*"];
[lines enumerateObjectsUsingBlock:^(NSString *candidate, NSUInteger idx, BOOL *stop) {
if ([test evaluateWithObject:candidate]){
NSLog(@":)");
} else{
NSLog(@":(");
}
}];
}
return 0;
}
輸出:
2012-08-08 15:46:16.213 regextest[1305:303] :)
2012-08-08 15:46:16.215 regextest[1305:303] :)
2012-08-08 15:46:16.215 regextest[1305:303] :(
如果行包含多個字符,它應該看起來像
NSPredicate* test = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", @"^[0-9]{1,2}% off.*"];
的.*
表明,任何數量的任何字符的可能存在。
我沒有問題,可以選擇「23%off」或「7%off」。你的候選人的形狀是否合適? – Matthias 2012-08-08 13:41:14
是的..我確信他們以數字開頭。 – Zsolt 2012-08-08 13:42:29