2014-01-13 39 views
0

結合使用Notepad ++我需要找到包含2個關鍵字(兩者)的行。將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

預期結果: LINE1

+3

匹配文本會是什麼樣子? – ComFreek

+2

給我們一些潛在的匹配和嘗試的例子。 – Sam

+0

@ihtus ofcourse沒有'&'操作符。上下文有點模糊。我的意思是一條線究竟是什麼?是以'\ r?\ n | $'或以[[。?!]'結尾的行嗎?無論如何,你可以使用遞歸'(?m)。*?(CAT | ROAD)。*?(?!\ 1)(?1)。'',參見[demo](http://regex101.com/r/tG3nQ6) – HamZa

回答

4

查找 - >正則表達式,然後鍵入

(CAT)(.*?)(ROAD) 
+0

這不符合一條線,雖然我不怪你,因爲OP沒有顯示完全預期的結果... – HamZa

+1

你是對的,它只是指出符合指定模式的線。由於他試圖找到這些線 - 這個簡單的正則表達式將做 – LorDex

+0

傢伙,它的工作。爲什麼你預計它不會工作? – ihtus

5

如果你正在尋找一個真正的&&操作,其中一行包含以任意順序這兩個詞,那麼你將要匹配這兩行:

貓上升和下降的路。

ROAD在CAT上升和下降。 (可憐的貓)

在這種情況下,你將要使用:

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

說明:

  • ^開始行
  • $端線
  • ?=積極向前看
  • \b字邊界。不知道你是否想要這個。如果您想匹配單詞的任何部分,請將其移除TheCATgoes up and down theROAD

(?=)是一個積極的展望。我們有兩個這樣的展望,一個用於任何事情(*),隨後是CAT,另一個用於任何事情(*),隨後是ROAD。這兩個預測之間有一個暗示&& - 兩個條件都必須滿足。

閱讀上lookarounds here

0

如果只有兩個字就想將使用操作來搜索任意次序的話一個簡單的模式:

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

在超過兩個字的積極lookahead可能會更好。