2012-07-30 51 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