2017-03-08 54 views
0

我試圖在日誌中搜索以下模式。使用Negative lookahead的Vim多行搜索

[write_<many other characters here till end of line> 
<10-15 lines here> 
<more characters> 10008 

我的日誌有很多這樣的事件與上次值並不10008. 首先,我試圖尋找這個是這樣的:

/\[write_\_.\{-}10008 

這是匹配[WRITE_從一些線條非常超前的最近[寫到10008.這就是爲什麼試圖使用負向視圖過濾出這樣的虛假匹配。

/\[write_\_.\{-}10008\([write_\)\@! 

這也沒有爲我工作。我在哪裏出了問題,還是在完全錯誤的方向思考?謝謝你的幫助。

回答

1

我認爲這是你在找什麼:

/\v\[write_(\_.(\[write_)@!){-}10008 

你把負先行在錯誤的地方。

+0

感謝您的回覆。我試過這個,但得到「E363:模式使用更多的內存比'maxmempattern'中斷」 。我不明白這是什麼意思。你能否幫助恰當地設置這個值。 – thorondor1990

+0

如果你在Kent的模式下得到'E363'錯誤,那麼你的文件可能包含大部分(超過〜1000行),沒有任何'[write_'頭部,我想; (我正在尋找糾正它,但對不起我找不到正確的模式..) – yolenoyer

+0

@ thorondor1990我用一些例子測試過,它的工作。但你的真實文件如何看起來像我不知道。如果你有'E363',請試試':set maxmempattern = A_BIG_NUMBER' – Kent