Ich arbeite an einem String-Pattern-Match-Algorithmus. Ich verwende NSRegularExpression, um die Übereinstimmungen zu finden. Für die Ex: Ich habe alle Wörter mit ‚#‘ zu finden in einer Reihe .. Derzeit verwende ich die folgende regex Funktion:Suchmuster in String mit Regex in Obj-c
static NSRegularExpression *_searchTagRegularExpression;
static inline NSRegularExpression * SearchTagRegularExpression()
{
if (!_searchTagRegularExpression)
{
_searchTagRegularExpression = [[NSRegularExpression alloc]
initWithPattern:@"(?<!\\w)#([\\w\\._-]+)?"
options:NSRegularExpressionCaseInsensitive
error:nil];
}
return _searchTagRegularExpression;
}
und ich es verwenden, wie unten:
NSString *searchString = @"Hi, #Hash1 #Hash2 #Hash3...";
NSRange searchStringRange = NSMakeRange(0, searchString.length);
NSRegularExpression *regexp = SearchTagRegularExpression();
[regexp enumerateMatchesInString:searchString
options:0
range:searchStringRange
usingBlock:^(NSTextCheckingResult *result, NSMatchingFlags flags, BOOL *stop)
{
// comes here for every match with range (in this case thrice)
}];
Dies funktioniert ordnungsgemäß. Aber ich möchte nur wissen, ob dies der beste Weg ist. schlagen Sie vor, wenn es irgendeine bessere Alternative gibt ...
Tnks für die Eingabe .. ich sollte versuchen, caseinsensitive Suche zu entfernen und die Zeit protokollieren, um den Unterschied zu sehen !!! – manileo86