I have the following text file:

1: This is a book.
2: Here is the book for you.
3: There are book.
4: You can read the book.
5: Is book good to read?

I want to find all occurrences of book not following a or the, that is, the book in Line 3,5 but not those on lines 1,2,4.

I tried to use the following search pattern:

[^a|the] book

however, this is only to check one character, but not the whole word.


The brackets are for chars. Use subpattern (parentheses) instead.

\%(a\|the\)\@3<! book

\%( ... \) --- a (unnumbered) submatch

a\|the --- "a" or "the"

\@3<! --- NO match behind (3 bytes lookback)

  • The 3 shouldnt be necessary, right?
    – D. Ben Knoble
    Oct 14 '19 at 12:46
  • 2
    @D.BenKnoble Unnecessary, but strongly recommended due to performance issues. See :h /\@<!.
    – Matt
    Oct 14 '19 at 12:53
  • well, I need to match a word but not led a defined pattern. I think there is a negative lookahead command(?) Oct 15 '19 at 0:07
  • @Matt It seems @3<1 is not working, After remove 3, (a\|the)\@<! book is a workaround. Oct 15 '19 at 0:20
  • @ShihSyuanHuang What is "@3<1"? I wrote \@3<!
    – Matt
    Oct 15 '19 at 3:33

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.