在一个正则表达式中,Vim负向前瞻和负面看后面

时间:2013-12-05 19:43:43

标签: regex vim

我正在尝试将这个正则表达式从sublime文本转换为我可以在vim中使用的表达式:     (?<![>\w\d])(42|45|21)\s(?!days)

我想匹配42,45和21,它们不会立即由&lt ;,一个单词字符或一个数字继续,并且不会跟着单词days。

在示例中,我想在此找到42:    This is a reference to chapter 42 in the book.

但不是这样:     This is a reference to chapter <a href="#">42</a>.

或者这个:     This is a reference to chapter <a href="#">42 section 35</a>.

或者这个:     This book took 42 days to write.

我对正则表达式相当新,对vim来说是新手,所以如果这是一个格式错误的正则表达式,请原谅我。

1 个答案:

答案 0 :(得分:8)

搞定了

\([>]\)\@<!\<\(4[25]\|21\)\( days\)\@!

\v([>])@<!<(4[25]|21)( days)@!

正如您所看到的,外观的语法在vim中是不同的,并且您有多种模式可以使用正则表达式进行搜索我通常使用nomagicvery magic

花些时间看看魔法模式的帮助::help /magic

修改

现在它还包括45和21