我对NSRegularExpression有问题。我敢肯定这是我的错误,但我无法弄清楚。我有这个代码:

NSError *error = NULL;
NSRegularExpression *regex = [NSRegularExpression
                              regularExpressionWithPattern: nextModelName
                              options:NSRegularExpressionCaseInsensitive
                              error:&error];
[regex enumerateMatchesInString:objTmplName options:0 range:NSMakeRange(0, [objTmplName length]) usingBlock:^(NSTextCheckingResult *match, NSMatchingFlags flags, BOOL *stop){

    NSLog(@"objTmplName:%@ nextModelName:%@",objTmplName,nextModelName);
  }];

输出为:
2012-07-30 10:59:48.779 MyApp[8470:707] objTmplName:yaoygo nextModelName:\w*
2012-07-30 10:59:48.799 MyApp[8470:707] objTmplName:yaoygo nextModelName:yo*
2012-07-30 10:59:48.808 MyApp[8470:707] objTmplName:yaoygo nextModelName:yaoygo

为什么当objTmplName = yaoygonextModelName:yo*进入?

我想做的是当我的objTmplName以“yo ...”开头时,它将为true,否则应为false。例如:
yooygo TRUE
yaygo FALSE
yayoyoyo FALSE

最佳答案

2012-07-30 10:59:48.799 MyApp [8470:707] objTmplName:yaoygo nextModelName:yo *
为什么在objTmplName = yaoygo和nextModelName:yo *时进入?
yo*的意思是:y,后跟任意数量的o(可能没有)。
如果要强制至少一个o,请使用:

yo+
编辑问题后:
尝试使用正则表达式:^yo.*

关于objective-c - NSRegularExpression错误:false时进入,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/11718289/

10-09 02:21