2012-02-09 6 views
6

De su análisis de la documentación para NSTextCheckingResult que estaba bajo la impresión de que si se encuentra ninguna coincidencia en la búsqueda NSRegularExpression la propiedad gama de NSCheckingResult se establecería en {NSNotFound,0}NSCheckingResult Range ¿Propiedad no configurada en {NSNotfound, 0}?

Desde mi prueba de abajo estoy encontrando que si hay coincidencia es el rango NSCheckingResult encontrado se establece en {0,0}. Es un pequeño punto, pero solo quería aclarar mi comprensión de cómo funciona esto.

// 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: En este ejemplo NSTextCheckingResult *match está siendo ajustado a nil, que es probablemente la razón por la ubicación y longitud están regresando cero (mensaje a objeto nil).

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

lo tanto, estoy adivinando que NSNotFound solamente se devuelve cuando hay varios grupos de captura donde representan un grupo vacío.

+0

Sí, es debido a la coincidencia nula. '{NSNotFound, 0}' puede ser devuelto por 'rangeAtIndex:' para el grupo que no participó en la coincidencia. – hoha

+0

@hoha si mueve su comentario a una respuesta, fuzzygoat podría aceptarlo y sacar esta pregunta de la cola Sin respuesta. –

Respuesta

2

Sí, es debido a la coincidencia nula. {NSNotFound, 0} puede devolverse por rangeAtIndex: para el grupo que no participó en el partido.

Cuestiones relacionadas