regex-cheatsheet icon indicating copy to clipboard operation
regex-cheatsheet copied to clipboard

Vim \zs and \ze

Open OnlineCop opened this issue 1 year ago • 1 comments

I apologize in advance; I am a very infrequent vim user, so some of this may need to be double-checked.

  • \zs sets the start of a match.
  • \ze sets the end of a match.

Vim's \zs appears to work like PCRE's \K (which discards matched text up to that point):

  • PCRE pattern: s/foo\Kfoo/bar/g
  • Vim pattern: :%s/foo\zsfoo/bar/g

Text: foofoofoofoo Result: foobarfoobar

On the other hand, vim's \ze appears to work more like a lookahead:

  • PCRE pattern: s/foo(?=foo)/bar/g
  • Vim pattern: :%s/foo\zefoo/bar/g
  • Vim's lookahead pattern: :%s/foo\(foo\)\@=/bar/g

Text: foofoofoofoo Result: barbarbarfoo

I thought it might be useful to include the \K similarities in your Vim cheatsheet.

OnlineCop avatar Feb 16 '24 21:02 OnlineCop

This might be worth adding, though I don't know which other dialects have that feature. They also overlap somewhat with the look-around operators.

remram44 avatar Feb 16 '24 22:02 remram44