2017-04-04 63 views
0

我有一個巨大的文本文件(200k行)。 我使用Notepad ++,我需要它返回這個詞在特定字符串(「string1」)和第一個出現的另一個(「」)之間的行。例如,我在尋找這個詞在「myWord」和文本文件看起來像這樣:使用正則表達式來搜索一個確切的字符串和第一個出現的另一個確切的字符串之間的特定字

"string1" "string 2 with myword in it" "string 3 also with myword in it" "string 4 random stuff" 
"string1" "string 2 random stuff" "string 3 also with myword in it" "string 4 random stuff" 
"string1" "string 2 with myword in it" "string 3 random stuff" "string 4 random stuff" 

搜索的結果應該返回1號線和3,而不是2行 因此,我認爲它像這樣的:

(?<="string1" ")(.*)(\bmyword\b)(.*)(?=") 

不過這也返回2號線,因爲myword是字符串3

我是當它涉及到正則表達式一個小白,這是我第一次使用它......

請幫助容易我的痛苦:)

+1

嘗試'(?<= 「字符串1」 「)((?:(?」 \ H + 「)。)*)\ bmyword \ B([^」] *)' –

+0

哎,這似乎工作!謝謝一堆。 –

回答

1

您可以使用一個解決方案,包括相匹配的模式" +空間+ " - (?:(?!" ").)*

(?<="string1" ")((?:(?!" ").)*?)\bmyword\b([^"]*) 

詳細

  • (?<="string1" ") - 一個積極的向後看,確保有"string1" "子串立即在當前位置的左側(可以替換爲"string1" "\K
  • ((?:(?!" ").)*?) - 回火貪婪令牌匹配比換行以外的任何字符不啓動" "序列,儘可能少的(組1)
  • \bmyword\b - 整個字myword
  • ([^"]*) - 組2:任何0除+ "以外的字符。

enter image description here

+0

太棒了!有沒有辦法讓Notepad ++突出顯示「myword」而不是兩個邊界之間的整個字符串? –

+0

您可以使用''string1「」(?:(?!「」)。)*?\ K \ bmyword \ b'並將它與*標記* - > *全部標記* –

+0

我的意思是在搜索結果,Notepad ++突出顯示整個字符串2.我只希望它突出顯示「myword」,它會幫助我直觀地看到(我得到數百個結果)。 –

相關問題