Mein Ziel ist es, die Anzahl der Wörter (in einem String) zu zählen, die mit einem spezifizierten Präfix von mehr als einem Buchstaben beginnen. Ein Fall sind Wörter, die mit "non" beginnen. Also in diesem Beispiel...
NSString * theFullTestString = @"nonsense non-issue anonymous controlWord";
... möchte ich Treffer bei "nonsense" und "non-issue" erhalten, aber nicht bei "anonymous" oder "controlWord". Die Gesamtanzahl meiner Treffer sollte 2 sein.
Hier ist also mein Testcode, der fast funktioniert, aber keiner der regulären Ausdrucksformen, die ich ausprobiert habe, funktioniert korrekt. Dieser Code erfasst "nonsense" (richtig) und "anonymous" (falsch), aber nicht "non-issue" (falsch). Seine Anzahl ist 2, aber aus dem falschen Grund.
NSUInteger countOfNons = 0;
NSString * theFullTestString = @"nonsense non-issue anonymous controlWord";
NSError *error = nil;
NSRegularExpression *regex = [NSRegularExpression regularExpressionWithPattern:@"non(\\w+)" options:0 error:&error];
NSArray *matches = [regex matchesInString:theFullTestString options:0 range:NSMakeRange(0, theFullTestString.length)];
for (NSTextCheckingResult *match in matches) {
NSRange wordRange = [match rangeAtIndex:1];
NSString* word = [theFullTestString substringWithRange:wordRange];
++countOfNons;
NSLog(@"Gefundenes Wort:%@ Anzahl von Nons:%d", word, countOfNons);
}
Ich bin ratlos.