Дан строковый атрибут вроде этого "Red Globe 21 # Bag SO2 SF White 5L Styro A"

Мне нужно сопоставить «Красный глобус 21 #» (или | и) «Сумка» (или | и) «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
Jose 13 Авг 2014 в 02:16
Что это означает (or|and)? Какой должна быть соответствующая группа (группы) для этой строки образца? Можете ли вы привести нам еще один пример, который не является идеальным, и рассказать, что вы хотите от него?
 – 
abarnert
13 Авг 2014 в 04:00
Например, в этой другой строке «Flame 19 # Pouch SO2 JAP White 5L Styro A» мне нужно, когда совпадение для «Flame 19 #» должно возвращать все записи «Flame 19 #.?», Но если задано «Flame 19 #» и "Пакет" должен получить все записи, содержащие эту комбинацию, сужая результат. Что касается Or | И я имел в виду, что любой из сегментов может быть дан отдельно или вместе. Спасибо
 – 
Jose
13 Авг 2014 в 04:28

1 ответ

Лучший ответ

Если я понимаю, что вы имеете в виду, я не уверен, что, по вашему мнению, регулярные выражения могут сделать для вас в первую очередь.

У вас есть несколько разных точных струн. Вы хотите иметь возможность выбрать подмножество этих строк и сопоставить каждый элемент, который содержит строки в этом подмножестве, верно?

Итак, вам просто нужно соединить И вместе точные совпадения подстроки: "SELF contains %@ && SELF contains %@".

0
abarnert 13 Авг 2014 в 06:29
Именно то, что я искал - Спасибо
 – 
Jose
13 Авг 2014 в 10:53