我使用DOM将Wikipedia文章作为NSString获取,然后使用NSString stringByReplacingOccurrencesOfString:withString:options:range:删除不需要的东西。我正在使用正则表达式,我没有多少经验。从阅读Apple的文档和尝试我能够做到的事情
"\\[[\\w]+\\]"
正则表达式,删除维基百科文章中的括号。这非常合适,因为括号不是嵌套的。
现在我试图从NSString中删除括号(包括其中的所有内容(和嵌套的))。我遇到了嵌套部分的问题。有了这个
\\s+\\([^\\)]*+\\)
正则表达式我能够删除一组括号,包括前面的空格(所以我删除之后不会有重复的空格)。我可以使用什么正则表达式来执行同样的操作,而是删除嵌套的括号?
我当前的实施将改变这个
快速的棕色(略带红色)狐狸跳过懒惰(他年纪大了(26岁)并且精疲力竭)狗。
进入这个
快速的棕色狐狸跳过那只懒散而疲惫的狗。
虽然期望的结果是这个
快速的棕色狐狸跳过懒狗。
答案 0 :(得分:1)
我明白了。此方法将返回没有嵌套括号的字符串。
-(NSString*)stringWithoutParentheses:(NSString*)input{
NSString *expression = @"\\s+\\([^()]*\\)";
while ([input rangeOfString:expression options:NSRegularExpressionSearch|NSCaseInsensitiveSearch].location!=NSNotFound)
{
input = [input stringByReplacingOccurrencesOfString:expression withString:@"" options:NSRegularExpressionSearch|NSCaseInsensitiveSearch range:NSMakeRange(0, [input length])];
}
return input;
}
使用此方法,传递
快速的棕色(略带红色)狐狸跳过了懒惰的狗(他已经老了(26岁)并且筋疲力尽)。
将返回
快速的棕色狐狸跳过懒狗。