Удалить слова из скобок не входящие в диапазон

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

  1. Слова находятся в скобках ().
  2. Могут быть пробелы после скобки или внутри между словами.
  3. В тексте нет цифр или других символов кроме букв и ().
  4. Может быть что одной из скобок не хватает, тогда я удаляю лишнюю.

Пример:

Текст на вход метода:

Спарки (собака), очень дружелюбный (но не всегда).

Собака в скобках пусть будет разрешенным словом (собака)

Тогда на выходе я хочу получить:

Спарки (собака), очень дружелюбный.

Дополнил:

Я добавил код получилось вот так:

 private String removeWordsInBrackets(String str) {
        char[] chars = str.toCharArray();
        StringBuilder sb = new StringBuilder();
        StringBuilder tmp = new StringBuilder();
        boolean foundBracket = false;
        for (char ch : chars) {
            if (ch == '(') {
                foundBracket = true;
            }

            if (ch == ')') {
                foundBracket = false;
                tmp.append(ch);
                if (tmp.toString().equals("(собака)")) {
                    sb.append(tmp);
                }
                tmp = new StringBuilder();
                continue;
            }

            if (foundBracket) {
                tmp.append(ch);
            } else {
                sb.append(ch);
            }
        }
        return sb.toString();
    }

Ответы (1 шт):

Автор решения: Ivan Tropin

Т.к. вложенных скобок, насколько я понимаю, в вашем тексте нет - можно юзать к примеру такую регулярку:

\(.*?\) 

(не забываем, что в джава-коде \ надо будет экранировать). Если нужно менять не все слова в скобках - то сначала находите через matches, сравниваете со списком "разрешенных" слов, и которых в этом списке нет - удаляете через replace.

→ Ссылка