Mein Ziel ist es, die Anzahl der Wörter (in einer Zeichenfolge) zu zählen, die mit einem angegebenen Präfix aus mehr als einem Buchstaben beginnen. Ein Fall sind Wörter, die mit "nicht" beginnen. So in diesem Beispiel ...Verwenden von regulären Ausdrücken, um Wörter zu finden, die mit einem dreistelligen Präfix beginnen
NSString * theFullTestString = @"nonsense non-issue anonymous controlWord";
... Ich will auf „Unsinn“ Treffer erhalten und „Nicht-Thema“, jedoch nicht für „anonym“ oder „Control“. Die Gesamtzahl meiner Treffer sollte 2 sein.
Also hier ist mein Test-Code, der nah scheint, aber keiner der regulären Ausdruck Formen, die ich ausprobiert habe, funktioniert richtig. Dieser Code fängt "Unsinn" (korrekt) und "anonym" (falsch) ab, aber nicht "nicht" (falsch). Seine Zählung 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(@"Found word:%@ countOfNons:%d", word, countOfNons);
}
Ich bin ratlos.
+1 OP hat nicht gesagt, aber bedenken Sie 'NSRegularExpressionCaseInsensitive' wenn gemischt Fall wäre ein Spiel betrachtet werden. Möglicherweise auch 'NSRegularExpressionUseUnicodeWordBoundaries'. – Rob