gpt4 book ai didi

objective-c - 删除(嵌套)括号的正则表达式

转载 作者:搜寻专家 更新时间:2023-10-30 20:25:59 25 4
gpt4 key购买 nike

我正在使用 DOM 将维基百科文章作为 NSString 获取,然后使用 NSString stringByReplacingOccurrencesOfString:withString:options:range: 删除不需要的内容。我正在使用正则表达式,对此我没有太多经验。通过阅读 Apple 的文档并尝试我能够做到这一点

"\\[[\\w]+\\]"

从维基百科文章中删除括号的正则表达式。这工作得很好,因为括号没有嵌套。

现在我正在尝试从 NSString 中删除括号(包括其中的所有内容(和嵌套的))。我在嵌套部分遇到问题。有了这个

\\s+\\([^\\)]*+\\)

正则表达式我能够删除一组括号,包括它前面的空格(所以我不会在删除后得到重复的空格)。我可以使用什么正则表达式来做同样的事情,但也可以删除嵌套的括号?

我目前的实现将改变这一点

The quick brown (slightly reddish) fox jumped over the lazy (he was old (26 years) and exhausted) dog.

进入这个

The quick brown fox jumped over the lazy and exhausted) dog.

虽然想要的结果是这样

The quick brown fox jumped over the lazy dog.

最佳答案

我想通了。此方法将返回没有嵌套括号的字符串。

-(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;
}

用这个方法,通过

The quick brown (slightly reddish) fox jumped over the lazy (he was old (26) and exhausted) dog.

会回来

The quick brown fox jumped over the lazy dog.

关于objective-c - 删除(嵌套)括号的正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11546048/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com