Поиск
\([^()]*\)
и заменить ничем.
В качестве подробного регулярного выражения:
\( # match an opening parenthesis
[^()]* # match any number of characters except parentheses
\) # match a closing parenthesis
Это будет работать нормально, если круглые скобки правильно сбалансированы и неопубликованы. Если круглые скобки могут быть вложены (like this (for example))
, то вам нужно перезапустить замену до тех пор, пока больше не будет совпадений, так как только самые внутренние круглые скобки будут сопоставляться при каждом запуске. *
Чтобы снять скобки, проделайте то же самое с \[[^[\]]*\]
для скобок \{[^{}]*\}
.
С помощью условных выражений вы можете сделать все три сразу, но регулярное выражение выглядит ужасно, не так ли?
(?:(\()|(\[)|(\{))[^(){}[\]]*(?(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.
* Вы не можете сопоставить произвольно вложенные скобки (поскольку эти конструкции больше не являются регулярными) с регулярными выражениями, так что это не ограничение данного регулярного выражения в частности, но регулярных выражений в целом.