Удалить слова из скобок не входящие в диапазон
Я хочу с помощью regex или возможно другого способа удалять не нужные мне слова из текста.
- Слова находятся в скобках ().
- Могут быть пробелы после скобки или внутри между словами.
- В тексте нет цифр или других символов кроме букв и ().
- Может быть что одной из скобок не хватает, тогда я удаляю лишнюю.
Пример:
Текст на вход метода:
Спарки (собака), очень дружелюбный (но не всегда).
Собака в скобках пусть будет разрешенным словом (собака)
Тогда на выходе я хочу получить:
Спарки (собака), очень дружелюбный.
Дополнил:
Я добавил код получилось вот так:
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 шт):
Т.к. вложенных скобок, насколько я понимаю, в вашем тексте нет - можно юзать к примеру такую регулярку:
\(.*?\)
(не забываем, что в джава-коде \ надо будет экранировать). Если нужно менять не все слова в скобках - то сначала находите через matches, сравниваете со списком "разрешенных" слов, и которых в этом списке нет - удаляете через replace.