Java字符串比较/匹配使用布尔查询(例如contains(“('word1'和'word2')或'word3'”))

时间:2011-02-13 20:59:40

标签: java

我真的不知道如何确切地询问这个任务,但我希望标题已经说明了。

我正在寻找一种方法(框架/ lib),它提供了一个String.contains()函数的功能,该函数告诉我给定的String是否与搜索查询匹配。

String1: "word1 word2 word3"
String2: "word3 word4 word5"

我想问:

String1.contains("('word1' AND 'word2') OR 'word3'")") ==> TRUE
String2.contains("('word1' AND 'word2') OR 'word3')") ==> TRUE
String2.contains("('word1' AND 'word2')")") ==> FALSE

有什么东西能满足我的需求吗? 我想到了Lucene搜索框架之类的东西,但这似乎对我想要实现的东西有点过分。

感谢任何提示。如果这个问题已经回答,那么对不起,我还没找到。

由于 克里斯托弗

2 个答案:

答案 0 :(得分:3)

Lucene确实有BooleanQuery类型的查询,允许您这样做。但是如果你真的想做一些像你的例子一样简单的事情,为什么不使用普通的旧布尔运算符?

if ((string1.contains("word1") && string1.contains("word2")) 
   || string1.contains("word3") {
  // ...
}

答案 1 :(得分:1)

hamcrest匹配器库可能很有用,它允许您使用任何对象(不仅仅是字符串)构造此类约束/谓词。最新版本的Junit(4.x)使用​​此库来允许用户构造此类谓词表达式。

http://code.google.com/p/hamcrest/

http://code.google.com/p/hamcrest/wiki/Tutorial