2012-07-30 49 views
1

我有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 

回答

2

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

Why it get into when objTmplName = yaoygo and nextModelName:yo* ?

yo*指:

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

如果要强制至少一个o,使用方法:

yo+ 

你编辑的问题后:

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

+0

我更新我的问题。这不是我兴奋的在这里做什么。 – Kuba 2012-07-30 09:14:28

+0

然后,使用:'^ yo。*' – sergio 2012-07-30 09:16:42

+0

dot!谢谢!我只是一个初学者。 – Kuba 2012-07-30 09:17:40