У меня проблемы с реализацией регулярных выражений в моем коде ...
Я дам краткое объяснение этого ... У меня есть функция, которая получает строку, чтобы проверить, содержит ли эта строкаэлемент ArrayList
(эти элементы могут состоять из одного или нескольких слов).Если он не содержит какого-либо элемента списка, он возвращается, чтобы записать его в файл, иначе игнорируется.Сначала я сделал следующее:
private boolean containDiscontinuedWord(String query) {
Matcher matcher;
Pattern pattern;
for (String blackL : blackList) {
pattern = Pattern.compile("\\b" + blackL + "\\b");
matcher = pattern.matcher(query);
while(matcher.find()) {
return true;
}
}
return false;
}
Проблема, с которой я столкнулся, заключается в том, что при запуске приложения в среде linux (установлена версия jvm 1.5) в файл ничего не записывается ... ноэто делает в среде Windows .Мое приложение построено на 1.6 с совместимостью 1.5.
Итак, я сделал следующее:
private boolean containDiscontinuedWord(String query) {
for (String blackL : blackList) {
if(query.matches(".*\\b(" + blackL + ")\\b.*")){
return true;
}
}
return false;
}
И эта функция работает просто отлично, но без "*" моего регулярного выражения ...но это мне нужно использовать для точного соответствия, но опять же он отлично работает в среде Windows.Я искал об этом очень многими способами, но я просто не могу найти что-то, что решает эту проблему, я не знаю, является ли мое регулярное выражение неправильным или что может быть ... Я надеюсь, что вы, ребята, можете дать мне подсказку!
Приношу свои извинения, если это глупый вопрос, но большое спасибо за его чтение!