2012-02-09 14 views
6

NSTextCheckingResultのためにドキュメントを見てから私はNSRegularExpression検索で一致が見つからなかった場合、私は何の一致がない場合ことを発見しています下のNSCheckingResult用範囲プロパティは私のテストから{NSNotFound,0}NSCheckingResult Rangeプロパティが{NSNotfound、0}に設定されていませんか?

に設定されるだろうという印象の下にありましたNSCheckingResultの範囲は{0,0}に設定されています。その小さな点ですが、私はこれがどのように機能しているかについての私の理解を明確にしたかっただけです。

// REGEXPRESSION 
NSString *textBuffer = @"1234567890"; 
NSString *pattern = @"(([A-Z]+))"; 
NSRegularExpression *regExp = [NSRegularExpression regularExpressionWithPattern:pattern options:0 error:nil]; 
NSTextCheckingResult *match = [regExp firstMatchInString:textBuffer options:0 range:NSMakeRange(0, [textBuffer length])]; 

// ERROR CHECK 
if([match range].location == NSNotFound) NSLog(@"Match Not found"); 
NSLog(@"location: %d", [match range].location); 
NSLog(@"length : %d", [match range].length); 

// OUTPUT 
location: 0 
length : 0 

EDIT:この例NSTextCheckingResult *matchで 場所及び長さがゼロ(ゼロ・オブジェクトへのメッセージ)を返すしている理由はおそらくである、nilに設定されています。

if(!match) NSLog(@"Match Not Found"); 

従って私はNSNotFoundは、それが空のグループを表す複数のキャプチャグループがある場合にのみ返されることを推測しています。

+0

はい、それはヌルマッチのためです。 '{NSNotFound、0}'は、マッチに参加しなかったグループの 'rangeAtIndex:'によって返されます。 – hoha

+0

@hohaあなたがあなたのコメントを答えに移すと、ファジーゴートはそれを受け入れてこの質問を未回答のキューから外すことができます。 –

答えて

2

はい、それはヌルマッチのためです。 {NSNotFound, 0}は、一致に参加しなかったグループの場合はrangeAtIndex:で返すことができます。