与布尔逻辑匹配的字符串

时间:2014-07-16 21:12:06

标签: java regex parsing grammar

我想创建一些东西,用于确定使用布尔逻辑是否在给定字符串中包含多个标记。

例如:“(foo AND bar)或fubar”将在字符串“foo blah bar blah”上评估为true,因为该字符串包含foo并且它包含bar。它还会对包含“fubar”的任何字符串求值为true,因为满足该条件并且它是OR语句。我想到的那个逻辑语句的正则表达式是:

((?=.*foo)(?=.*bar)|(?=.*fubar))

我需要支持的唯一操作符是“AND”,“OR”和“NOT”。是否存在执行此功能的现有库或项目(最好是在JVM上运行)?我已经研究了如何通过使用上面提到的正面和负面前瞻将布尔逻辑解析为正则表达式来自己创建它,但是想知道是否有更好的方法/库来执行此操作。

为了清晰而编辑。

1 个答案:

答案 0 :(得分:0)

你不需要正则表达式;你不能只使用

if ((string.contains("foo") && string.contains("bar")) || string.contains("fubar")) {
    // match found
}