我在代码中实现正则表达式时出现问题...
我将快速解释一下......我有一个函数接收一个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环境下运行良好。我已经在很多方面搜索了这个,但我找不到能解决这个问题的东西,我不知道我的正则表达式是不正确还是可以...我希望你们能给我一个线索!
如果这是一个愚蠢的问题我很抱歉,但非常感谢你阅读它!
答案 0 :(得分:0)
您真的需要调查indexOf
。构建正则表达式的方式已经非常容易出错(考虑引用)。另外,你不理解“匹配”和“搜索”与正则表达式之间的区别。
答案 1 :(得分:0)
你列出的黑名单是什么?如果它们包含任何正则表达式元字符,则需要引用它们。
http://docs.oracle.com/javase/6/docs/api/java/util/regex/Pattern.html#quote%28java.lang.String%29