You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Python中评估嵌套布尔/逻辑表达式?规则解析优化

复杂规则解析器开发问题

规则特性

  • 空格分隔独立规则
  • + 表示AND运算符(需全部满足)
  • , 表示OR运算符(满足任一即可)
  • - 标记可选元素(该元素不存在不影响规则判定)
  • 括号内的token需作为整体求值

给定嵌套规则定义

definition = '((K00925 K00625),K01895) (K00193+K00197+K00194) (K00577+K00578+K00579+K00580+K00581-K00582-K00583+K00584) (K00399+K00401+K00402) (K22480+K22481+K22482,K03388+K03389+K03390,K08264+K08265,K03388+K03389+K03390+K14127+(K14126+K14128,K22516+K00125))'

各规则含义

  1. ((K00925 K00625),K01895):等价于 (K00925 AND K00625) OR K01895
  2. (K00193+K00197+K00194):三个token必须全部存在
  3. (K00577+K00578+K00579+K00580+K00581-K00582-K00583+K00584):除带-的可选元素外,其余token必须全部存在
  4. (K00399+K00401+K00402):三个token必须全部存在
  5. (K22480+K22481+K22482,K03388+K03389+K03390,K08264+K08265,K03388+K03389+K03390+K14127+(K14126+K14128,K22516+K00125)):满足任一子规则即可,最后一子规则包含嵌套OR逻辑

当前问题

现有代码可处理简单规则,但无法正确评估带嵌套括号的复杂规则,例如处理第一个规则时存在拆分错误。

预期输出

{
    '((K00925 K00625),K01895)':True,
    '(K00193+K00197+K00194)':True,
    '(K00577+K00578+K00579+K00580+K00581-K00582-K00583+K00584)':True,
    '(K00399+K00401+K00402)':True,
    '(K22480+K22481+K22482,K03388+K03389+K03390,K08264+K08265,K03388+K03389+K03390+K14127+(K14126+K14128,K22516+K00125))':True
}

边缘案例要求

规则:

rule_edge_case='((K00134,K00150) K00927,K11389)'

当给定tokens集合为{'K00134','K00927'}时,求值结果应为True,因为满足(K00134 OR K00150) AND K00927逻辑。

内容的提问来源于stack exchange,提问作者O.rka

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.19 20:08:10