如何用obj-C中的regex替换字符串中第N个字符串

时间:2014-12-19 19:12:04

标签: objective-c regex

使用类似的东西我可以替换所有出现的字符串

NSString * str = @"monday sunday monday";
NSRegularExpression *regex = [NSRegularExpression regularExpressionWithPattern:@"monday" options:NSRegularExpressionCaseInsensitive error:NULL];
NSString *newStr = [regex stringByReplacingMatchesInString:str options:0 range:NSMakeRange(0, [str length]) withTemplate:@""];

如何才能更换最后一次出现的正确方法?

2 个答案:

答案 0 :(得分:0)

您可以使用负面向前看

/monday(?!.*monday)/
  • (?!.*monday)负面展望。确保monday未跟随另一个monday

Regex Demo

答案 1 :(得分:0)

这是一种简单的方法:

  1. 创建一个匹配一个字符串的NSRegularExpression

  2. 调用方法matchesInString:options:range:返回NSArray NSTextCheckingResult,描述字符串中的所有匹配项。选择数组的最后一个元素,即最后一个匹配。

  3. 如果您有简单的文本替换,现在可以使用从replaceCharactersInRange:withString:获得的范围在原始字符串的可变副本上使用NSTextCheckingResult。如果您的替换文字不简单但基于匹配构建,请先使用replacementStringForResult:inString:offset:template:获取替换字符串,然后使用replaceCharactersInRange:withString:

  4. HTH