将2个正则表达式与逻辑“和”结合起来

时间:2014-01-13 20:38:16

标签: regex notepad++

使用Notepad ++我需要找到包含2个关键字(两者)的行。

我找到了how to combine 2 regex with a logical 'or' operator.

示例: (searchword1)|(searchword2)

但我如何与逻辑'和'结合?

尝试&,&&&没有成功。

输入示例:

The CAT goes up and down the ROAD.
The CAT goes up and down the CITY.

搜索字词: CAT & ROAD

预期结果:第1行

4 个答案:

答案 0 :(得分:5)

如果您正在寻找一个真正的&&操作,其中一行包含任何顺序的单词,那么您将需要匹配以下两行:

  

CAT在ROAD上下移动。

     

ROAD在CAT上下移动。 (可怜的猫)

在这种情况下,您需要使用:

^(?=.*\bCAT\b)(?=.*\bROAD\b).*$

说明:

  • ^起跑线
  • $结束行
  • ?=积极向前看
  • \b字边界。不确定你是否想要这个。如果您想匹配单词的任何部分,请删除这些内容,例如TheCATgoes up and down theROAD

(?=)是一个积极的展望。我们有两个这样的预测,一个用于任何事物(*),然后是CAT,一个用于任何事物(*),然后是ROAD。两个先行之间存在隐含的&& - 必须满足这两个条件。

阅读结论 here

答案 1 :(得分:4)

查找 - >正则表达式,然后键入

(CAT)(.*?)(ROAD)

答案 2 :(得分:0)

如果只需要两个单词,则使用运算符以任意顺序搜索单词时使用简单模式:

(CAT.*ROAD)|(ROAD.*CAT)

对于两个以上的词,积极的前瞻可能更好。

答案 3 :(得分:0)

只是@acarlon答案的补充,这对我有用。

要使此功能在notepad ++中运行,必须确保已选中“匹配换行符”复选框以及正则表达式模式:

enter image description here