1

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 = yaoygo、そして入るのnextModelName:yo*ですか?

私がやりたいのは、objTmplNameが "yo ..."で始まる場合、それはtrueになります。それ以外の場合、これはfalseになります。例えば:

yooygo TRUE
yaygo FALSE
yayoyoyo FALSE
4

1 に答える 1

2

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

objTmplName = yaoygoおよびnextModelName:yo *のときになぜ入るのですか?

yo*意味:

yその後に任意の数o(おそらくなし)が続きます。

少なくとも1つを強制する場合は、次oを使用します。

yo+

質問を編集した後:

正規表現を試して使用してください:^yo.*

于 2012-07-30T09:06:55.710 に答える