gvim 混合 AND & OR 条件搜索查询

gvim 混合 AND & OR 条件搜索查询

您好,我想使用以下条件搜索 gvim 内的文本 a&b&(c|d)。我知道确实如此a&b,但将这两者结合起来是行不通的。确切的命令是什么?/.*a\&.*bc|d/c\|d

编辑:我尝试过.*a\&.*b\&.*(c\|d),但它是将其.*a\&.*b\&.*(cd), inc 括号进行或运算。

edit2:将表达式分解为a&b&c|a&b&d正在工作.*a\&.*b\&.*c\|.*a\&.*b\&.*d,但这不是我正在寻找的东西。

答案1

正如你所发现的,Vim 搜索模式被解释为\&绑定比 更紧密\| (即 \&优先级高于\|),并且似乎没有任何方法可以覆盖它。但是,那分配财产

(P∧(Q∨R)) ⇔ ((P∧Q)∨(P∧R))

其中“∧”代表 AND(即\&),“∨”代表 OR(即\|)。替代

  • P = a&b
  • Q = c
  • R = d

我们可以得出

a&b&(c|d) = (a&b&c) | (a&b&d)

所以你可以使用正则表达式进行“a&b&(c|d)”搜索.*a\&.*b\&.*c\|.*a\&.*b\&.*d。当然,这并不理想。

笔记:该解决方案由 OP 确定。

相关内容