Соответствие NSP предиката - PullRequest
1 голос
/ 17 декабря 2011

Я пытаюсь сопоставить шаблон URL, но ничего не найдено. В принципе, разрешено все, что есть в Yahoo, например, ca.yahoo.com. Это работает для этого, но это не будет работать просто для yahoo.com. Вот мой код:

NSString *string = @"http://yahoo.com/";
NSString *regex = @"^http://.*\\.yahoo.com/.*$";
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"SELF MATCHES[C] %@", regex];
BOOL match = [predicate evaluateWithObject:string];

NSLog(@"%@", match? @"MATCH" : @"NO LUCK");

печатает без удачи

1 Ответ

1 голос
/ 17 декабря 2011

Проблема в том, что период непосредственно перед Yahoo не является обязательным. Вот версия, которая делает все предшествующее необязательным:

NSString *regex = @"^http://(.*\\.)*yahoo.com/.*$";

Вот более простой способ использования rangeOfString::

NSString *string = @"http://yahoo.com/";
NSString *regex = @"^http://(.*\\.)*yahoo.com/.*$";

NSRange range = [string rangeOfString:regex options:NSRegularExpressionSearch];
NSLog(@"%@", range.location!=NSNotFound? @"MATCH" : @"NO LUCK");

Вывод NSLog:

MATCH

...