(.+)\1+
正規表現を使用して、最も長い連続した部分文字列と一致し、1回目の逆参照$1
を使用して1回のオカレンスに置き換えることができます。
使用
NSError *error = nil;
NSString *string = @"FIRSTEXAMPLEEXAMPLETEST";
NSRegularExpression *regex = [NSRegularExpression regularExpressionWithPattern:@"(.+)\\1+" options:nil error:&error];
NSString *modifiedString = [regex stringByReplacingMatchesInString:string options:0 range:NSMakeRange(0, [string length]) withTemplate:@"$1"];
NSLog(@"%@", modifiedString); // => FIRSTEXAMPLETEST
Objective-C demo
パターンがの詳細を参照してください:
(.+)
- 改行以外の1つの以上の文字をキャプチャグループ1は(改行にマッチできるようにする前に(?s)
フラグを使用ドット付き)
\1+
- グループ1でキャプチャされた同じ部分文字列の1回以上の出現。
ありがとう、ありがとうございます。私は1番目の逆参照を保持する$ 1を使用することを忘れました。 –