NSPredicate正则表达式匹配同一属性上的多个段

时间:2014-08-12 22:16:31

标签: objective-c regex xcode nspredicate

给出像这样的字符串属性“Red Globe 21#Bag SO2 SF White 5L Styro A”

我需要匹配“Red Globe 21#”(或|和)“Bag”(或|和)“SO2”(或|和)“SF White”。

按照dasblinkenlight NSPredicate Exact Match with String发布的样本

我试图弄清楚这个RegEx的正确组合

NSString *str = @"Globe";
    NSMutableString *arg = [NSMutableString string];
    [arg appendString:@"\\s*\\b"];
    [arg appendString:str];
    [arg appendString:@"\\b\\s*\\w*"];
    NSPredicate *p = [NSPredicate predicateWithFormat:@"SELF matches[c] %@", arg];
    NSArray *a = [NSArray arrayWithObjects:@"Red Globe 21# Bag SO2 SF White 5L Styro A ", @"test", @"Test", @"TEST", nil];
    NSArray *b = [a filteredArrayUsingPredicate:p];

    NSLog(@"Result ;%@",b);`

但这对我没有用,我将非常感谢你的帮助。

1 个答案:

答案 0 :(得分:0)

如果我明白你的意思,我不确定你认为正则表达式能为你做些什么。

你有一些不同的确切字符串。您希望能够选择这些字符串的子集,并匹配该子集中包含字符串的每个元素,对吗?

所以,你只需要和一起确切的子串匹配:"SELF contains %@ && SELF contains %@"