Регулярное выражение не работает java.util.regex. *; - PullRequest
0 голосов
/ 26 ноября 2011

У меня проблемы с реализацией регулярных выражений в моем коде ...

Я дам краткое объяснение этого ... У меня есть функция, которая получает строку, чтобы проверить, содержит ли эта строкаэлемент 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.Я искал об этом очень многими способами, но я просто не могу найти что-то, что решает эту проблему, я не знаю, является ли мое регулярное выражение неправильным или что может быть ... Я надеюсь, что вы, ребята, можете дать мне подсказку!

Приношу свои извинения, если это глупый вопрос, но большое спасибо за его чтение!

Ответы [ 2 ]

0 голосов
/ 26 ноября 2011

Каковы ваши черные слова в списке? Если они содержат какие-либо метасимволы регулярных выражений, их нужно будет заключать в кавычки.

http://docs.oracle.com/javase/6/docs/api/java/util/regex/Pattern.html#quote%28java.lang.String%29

0 голосов
/ 26 ноября 2011

Тебе нужно серьезно расследовать indexOf.То, как вы строите регулярное выражение, уже очень подвержено ошибкам (подумайте о цитировании).Кроме того, вы не поняли разницу между «сопоставлением» и «поиском» с помощью регулярных выражений.

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