原始字符串是:这是一个带有(名词)(动词)(副词)的句子。
原句有三次出现()。我需要最后一个完整但用@“”替换休息
必填字符串:这是一个带有(副词)的句子。
我可以用NSRange做到,但我正在寻找NSRegularExpression模式。 另外哪个更有效,一个是NSRange或NSRegularExpression。
CODE
NSRegularExpression *regex = [NSRegularExpression regularExpressionWithPattern:@"\\(.*?\\)" options:NSRegularExpressionCaseInsensitive error:NULL];
NSString *newString = [regex stringByReplacingMatchesInString:modify options:0 range:NSMakeRange(0, [modify length]) withTemplate:@""];
输出:这是一个带
的句子答案 0 :(得分:0)
您可以自己获取匹配范围并手动执行替换,忽略最后一个。
NSMutableString* newString = [modify mutableCopy];
NSArray<NSTextCheckingResult*>* matches = [regex matchesInString:newString options:0 range:NSMakeRange(0, newString.length)];
if (matches.count >= 2)
{
// Enumerate backwards so that each replacement doesn't invalidate the other ranges
for (NSInteger i = matches.count - 2; i >= 0; i--)
{
NSTextCheckingResult* result = matches[i];
[newString replaceCharactersInRange:result.range withString:@""];
}
}