2013-10-09 55 views
2

我創建vim搜索模式來查找不良狀態代碼:而不是搜索模式

/[45][0-9][0-9] 

它可以找到504499404(空間每個號碼前後)

但我不想要它找到404。如何改變我的搜索模式,使其跳過404

+0

有了這些給定的信息,我們就無法創建符合您需求的正則表達式。你想匹配什麼樣的狀態碼? – Vince

回答

7

使用該號碼負前瞻:

/\(.*404\)\@![45]\d\{2\} 

UPDATE:感謝Karoly Horvath指出,這regex可能失敗,並在同一行的一些數字。好得多:

/\(404\)\@![45]\d\{2\} 

用另一種方式負向後看賽後:

/[45]\d\{2\}\(404\)\@<! 
+1

vim是否支持正則表達式?這不是一個POSIX引擎嗎? –

+0

@TimPietzcker它的確如此。 – devnull

+1

@TimPietzcker:是的。它支持他們。 'Vim'正則表達式的風格非常強大。你可以用':help regex'來看它 – Birei

2
5[0-9][0-9]|4[1-9][0-9]|40[0-35-9] 

老派模式是:

  • 5其次由任意兩位數字,或:
  • 4後面沒有零,然後任何數字或:不跟4

  • 40我希望你不要有其他列入黑名單的代碼,因爲這會變得難看。

  • +0

    我可能是錯了有關的前瞻:http://stackoverflow.com/questions/18391665/vim-positive-lookahead-regex。我會刪除該評論。 – Kobi