NSPredicate и регулярное выражение

Может ли кто-нибудь помочь мне с использованием Regex с NSPredicate?

NSString *regex = @"(?:[A-Za-z0-9])";
NSPredicate *pred = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", regex];
if ([pred evaluateWithObject:mystring])
{
  //do something
}

тестирование вышеприведенного с помощью mystring - qstring123, похоже, не работает. Я ожидаю, что он войдет в условие if, потому что он предположительно должен соответствовать регулярному выражению.

Кроме того, мне нужно регулярное выражение для альфа-числа, допускающее запятые и пробелы.

это сработает?

@"(?:[A-Za-z0-9])*(?:,[A-sa-z0-9)*(?:\s[A-sa-s0-9])"

Пожалуйста помоги.


person Dave    schedule 16.03.2010    source источник


Ответы (1)


Из моих экспериментов он пытается сопоставить регулярное выражение со всей строкой и не будет соответствовать внутри строки.

Поэтому регулярное выражение [a-zA-Z0-9]+ работает, а [a-zA-Z0-9] нет.

Имея это в виду, вы можете переработать свой предикат сопоставления запятых или использовать более полнофункциональное решение для регулярных выражений, например удивительное RegexKit и RegexKitLite.

person Dave DeLong    schedule 16.03.2010
comment
ой, я пропустил + в конце. Я на самом деле использовал *, и это сработало. Какая разница? - person Dave; 17.03.2010
comment
* соответствует 0 или более раз, + соответствует 1 или более раз. - person Dave DeLong; 17.03.2010