Может быть проще сделать что-то вроде:
public boolean doesInputContainWord(String inputStr, String word) {
inputStr = inputStr.toLowerCase().replaceAll("[^a-z]", " ");
word = " " + word.toLowerCase() + " ";
return inputStr.contains(word);
}
Это заменяет каждый символ во входной строке, который не является буквой, пробелом, а затем проверяет, содержит ли текст преобразования word
. Обратите внимание, что это <space> + <word> + <space>
.
Или, если вы действительно хотите использовать регулярное выражение для сопоставления, я бы предложил удалить []
вокруг "ПОЗИТИВНО", а также \b
и +
, которые последуют. Скобки определяют класс символов, что в данном случае не то, что вам нужно. Вы хотите найти буквальный текст "ПОЗИТИВНО". [POSITIVE]+
будет соответствовать таким вещам, как «OOST» и «VIVE», и практически любой строке, содержащей одну или несколько букв из слова «Positive».