2011-02-09 3 views
3

Je développe une application de lecteur d'ebook. J'ai le fichier .ePUB pour l'ebook entier où dans chaque sujet de l'ebook est un fichier html. Je souhaite implémenter la fonctionnalité de recherche dans l'application. J'utilise la classe NSRegularExpression pour la recherche. S'il vous plaît considérer le code html suivant:NSRegularExpression pour enlever l'étiquette HTML

<temp> I am temp in tempo with temptation </temp> 

Say par exemple dans le code HTML ci-dessus, je veux juste chercher la température de mot. Maintenant, dans le code ci-dessus temp apparaît 5 fois -><temp> </temp> Temp tempo temptation. Je cherche une expression régulière où je peux seulement extraire le mot entier "temp". Je ne veux pas considérer le mot temp dans les balises html <temp> </temp>. Je ne veux pas non plus que le mot tempo et tentation soit pris en compte.

Merci à l'avance

Répondre

2

Comment est-ce?

[^<\/?\w*>]+(temp\s) 

http://rubular.com/r/3PkdvNZSbr

NSString *evaluate_string = @"<temp> I am temp in tempo with temptation </temp>"; 
NSString *word = @"temp"; 
NSError *outError; 
NSRegularExpression *regex = [NSRegularExpression regularExpressionWithPattern:[NSString stringWithFormat:@"[^<\\/?\\w*>]+(%@\\s)", word] options:0 error:&outError]; 

NSTextCheckingResult *result = [regex firstMatchInString:evaluate_string options:0 range:NSMakeRange(0, [evaluate_string length])]; 

if(result) { 
    NSLog(@"Found"); 
} 
+0

Merci Jacob. Fonctionne comme le charme. Je me demandais ... pourriez-vous s'il vous plaît expliquer le fonctionnement de l'expression ci-dessus régulière en bref. – Prazi

1

Que diriez-vous ce chiot:

</?[a-z][a-z0-9]*[^<>]*>

Je l'ai trouvé dans la bibliothèque RegexBuddy :)