NSRegularExpression错误:false时进入

时间:2012-07-30 09:03:45

标签: objective-c ios regex nsregularexpression

我遇到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以“哟......”开头时,它将是真的,否则这应该是假的。例如:

yooygo TRUE
yaygo FALSE
yayoyoyo FALSE

1 个答案:

答案 0 :(得分:2)

  

2012-07-30 10:59:48.799 MyApp [8470:707] objTmplName:yaoygo nextModelName:yo *

     

为什么它会在objTmplName = yaoygo和nextModelName:yo *?

时进入

yo*表示:

y后跟任意数量的o(可能没有)。

如果您想强制至少一个o,请使用:

yo+

编辑问题后:

尝试使用正则表达式:^yo.*