我应该在 Python 中使用哪种解析器来将文本与布尔条件匹配

What kind of parser should I use in Python to match a text against a boolean condition

假设我有一段文字是

John likes apple, banana and grapes

我有一个类似于

的布尔表达式
((banana & apple) & (!orange)) || (peach)

这基本上意味着文本应该((包含单词 "banana" 和单词 "apple")和(不应包含 "orange"))或(包含单词 "peach").

将上面的布尔逻辑应用到我们需要得到结果为True的文本中(因为它确实包含banana和apple并且不包含orange这个词。

在 Python 中实现此类布尔规则的简单方法是什么?是否有一个框架可以接受一大块文本和一个表达式并对其进行评估?表达式可以根据框架的要求写成

到目前为止,我正在使用一个简单的代码来解析 Python 文本,该代码将跟踪括号等,效率不高,也没有提供探索更灵活表达式的机会。

谢谢

我不知道你是否想通过提供要解析的文本来做到这一点,但我记住了这一点:

class String(str):
    def __call__(self, *args):
        s = str(self)
        for arg in args:
            if arg not in s:
                return False
        return True


if __name__ == '__main__':
    s1 = String("John likes apple, banana and grapes")
    print(s1("apple", "banana") and not s1("orange"))  # True