Regex, чтобы удалить все скобки, кроме большинства внешних - PullRequest
0 голосов
/ 15 февраля 2019

Я пытался и читал много похожих ответов, так что не повезло.Мне нужно удалить скобки в тексте внутри скобок, сохраняя текст.В идеале с 1 регулярным выражением ... или, может быть, 2?

Мой текст:

Альфа (Браво (Чарли))

Я хочу достичь:

Альфа (Браво Чарли)

Лучшее, что я получил на данный момент:

\\(|\\)

, но он получает:

Альфа Браво Чарли

Ответы [ 3 ]

0 голосов
/ 15 февраля 2019

Из вашего поста и комментариев кажется, что вы хотите удалить только самые внутренние скобки, для которых вы можете использовать следующее регулярное выражение,

\(([^()]*)\)

И заменить на $1 или \1 в зависимости отваш язык.

В этом регулярном выражении \( соответствует начальной скобке, \) соответствует закрывающей скобке, а ([^()]*) гарантирует, что захваченный текст не содержит ни (, ни ), что гарантирует егоявляется самой внутренней круглой скобкой и помещает захваченный текст в group1, а полное совпадение заменяется тем, что было захвачено в тексте group1, таким образом избавляясь от самой внутренней круглой скобки и сохраняя текст внутри как есть.

Демо

0 голосов
/ 15 февраля 2019

Ваш шаблон \(|\) использует чередование, после чего будет соответствовать открывающая или закрывающая скобка.

Если согласно комментариям есть только 1 пара вложенных скобок, вы можете сопоставить:

(\([^()]*)\(([^()]*\)[^()]*)\)
  • ( Начало группы захвата
  • \( Соответствие открывающей скобке
    • [^()]* Соответствие 0+ раз, а не ( или )
  • ) Закрыть группу 1
  • \( Матч
  • ( Группа захвата 2
    • \([^()]*\) Матч от (до )
    • [^()]* Совпадение 0+ раз не ( или )
  • ) закрыть группу захвата
  • \) Соответствовать закрывающей скобке

И заменить на первую и вторую группы захвата.

Regex demo

0 голосов
/ 15 февраля 2019

Вы можете использовать регулярные выражения следующим образом:

(\(.*?)\((.*?)\)

enter image description here

С этой строкой замены:

$1$2

Regex demo


Обновление: согласно комментарию ııı , так как я не знаю ваш полный образец текста, я предоставляю это регулярное выражение вЕсли у вас есть этот сценарий

(\([^)]*)\((.*?)\)

Regex demo

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...