Home > Mobile >  vim regular expreesion
vim regular expreesion

Time:06-13

How to find <foo> but not <<foo>> in following text:

---------<foo>--------

---------<<foo>>------

I try /\(<<\)\@!\zsfoo,it does't work correctly. thanks

CodePudding user response:

You can use

:g/\(<\)\@<!<foo>\(>\)\@!

Or, since < and > are single char strings, you may even discard the grouping parentheses:

:g/<\@<!<foo>>\@!

Details

  • \(<\)\@<! / <\@<! - a location not immediately preceded with < char
  • <foo> - a <foo> string
  • \(>\)\@! / >\@! - immediately to the right, there must be no > char.
  • Related