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

求助:编写匹配含括号逻辑短语的正则表达式

正则表达式解决方案

支持括号(含嵌套)的正则表达式(PCRE引擎)

^(?:\((?1)\)|(?:NOT )?'[^']+')(?:(?: AND | OR )(?:\((?1)\)|(?:NOT )?'[^']+'))*$

仅支持单层括号的版本(兼容JavaScript等无递归支持的引擎)

^(?:\((?:(?:NOT )?'[^']+'(?:(?: AND | OR )(?:NOT )?'[^']+')*)\)|(?:NOT )?'[^']+')(?:(?: AND | OR )(?:\((?:(?:NOT )?'[^']+'(?:(?: AND | OR )(?:NOT )?'[^']+')*)\)|(?:NOT )?'[^']+'))*$

规则解释

  1. 边界控制:^ 和 $ 确保整个字符串完全匹配,避免部分符合的片段被误判。
  2. 核心匹配单元:
    • (?:NOT )?'[^']+':匹配带可选NOT前缀的引号值,要求引号内至少包含一个非引号字符,避免空引号的无效格式。
    • \((?1)\):递归引用整个核心规则,处理括号包裹的任意合法逻辑短语,支持多层嵌套括号,仅PCRE类引擎支持;单层版本则直接在括号内重复基础逻辑规则,适配无递归能力的引擎。
  3. 逻辑连接规则:(?: AND | OR ) 严格匹配大写的逻辑运算符,连接后续的核心单元(括号组或带NOT的引号值),可重复多次实现多条件组合。

匹配验证

  • 允许的短语:所有你列出的带/不带括号的案例都能正常匹配,例如:
    • ('foo' AND 'bar') OR ('baz' AND 'que')
    • (NOT 'foo' OR 'bar')
    • 'value' AND NOT 'value1'
  • 不允许的短语:不符合规则的案例会被自动排除,例如:
    • 无引号的value:不满足引号包裹的基础要求
    • 无运算符连接的'value' 'value2':缺少AND/OR连接符,不符合逻辑结构
    • 引号未闭合的('foo OR 'bar'):引号内的内容匹配失败
    • 开头直接是运算符的AND value:不符合核心单元的起始规则

内容的提问来源于stack exchange,提问作者J.Doe

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.09 03:23:11