正则表达式不起作用java.util.regex。*;

时间:2011-11-25 23:15:25

标签: java regex

我在代码中实现正则表达式时出现问题...

我将快速解释一下......我有一个函数接收一个String来检查该String是否包含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 :(得分:0)

您真的需要调查indexOf。构建正则表达式的方式已经非常容易出错(考虑引用)。另外,你不理解“匹配”和“搜索”与正则表达式之间的区别。

答案 1 :(得分:0)

你列出的黑名单是什么?如果它们包含任何正则表达式元字符,则需要引用它们。

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