如何从NSString

时间:2016-09-14 11:31:26

标签: ios regex

我有一个包含字符的字符串,我需要找出一个最短的字符串或从该字符串中删除字符序列。

Eg: NSString *string = @"FIRSTEXAMPLEEXAMPLETEST";
Output: FIRSTEXAMPLETEST

请你帮我找一个合适的Regex format来实现它。提前谢谢。

1 个答案:

答案 0 :(得分: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组捕获除换行符之外的一个或多个字符(之前使用(?s)标志以允许匹配的换行符与点匹配)
  • \1+ - 在第1组中捕获的相同子字符串的一次或多次出现。
相关问题