gpt4 book ai didi

objective-c - 如何使用 NSRegularExpression 删除字符串中的括号单词?

转载 作者:行者123 更新时间:2023-12-01 15:01:28 25 4
gpt4 key购买 nike

我不太熟悉正则表达式,所以我一直在努力让它与 Apple 的 NSRegularExpression 一起工作

我正在尝试删除圆括号或方括号中的单词...

例如:

NSString *str = @"How do you (remove parentheses words) in a string using"

结果字符串应该是:@"How do you within a string using"

谢谢!!!

最佳答案

搜索

\([^()]*\)

然后什么都不替换。

作为冗长的正则表达式:

\(      # match an opening parenthesis
[^()]* # match any number of characters except parentheses
\) # match a closing parenthesis

如果括号正确平衡且未嵌套,这将工作正常。如果括号可以嵌套 (像这样(例如)),那么您需要重新运行替换,直到没有进一步的匹配,因为在每次运行中只会匹配最里面的括号。*

要删除括号,请对 \[[^[\]]*\] 执行相同操作,对于大括号 \{[^{}]*\}

使用条件表达式,您可以同时执行所有这三个操作,但正则表达式看起来很丑,不是吗?

(?:(\()|(\[)|(\{))[^(){}[\]]*(?(1)\))(?(2)\])(?(3)\})

但是,我不确定 NSRegularExpression 是否可以处理条件。可能不会。这个怪物的解释:

(?:           # start of non-capturing group (needed for alternation)
(\() # Either match an opening paren and capture in backref #1
| # or
(\[) # match an opening bracket into backref #2
| # or
(\{) # match an opening brace into backref #3
) # end of non-capturing group
[^(){}[\]]* # match any number of non-paren/bracket/brace characters
(?(1)\)) # if capturing group #1 matched before, then match a closing parenthesis
(?(2)\]) # if #2 matched, match a closing bracket
(?(3)\}) # if #3 matched, match a closing brace.

*您不能将任意嵌套的括号(因为这些构造不再是正则的)与正则表达式匹配,所以这不是这个正则表达式的特殊限制,而是一般正则表达式的限制。

关于objective-c - 如何使用 NSRegularExpression 删除字符串中的括号单词?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3741279/

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