2013-10-09 54 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