lookarounds positive negative lookbehind lookahead

前端 未结 2 799
失恋的感觉
失恋的感觉 2021-01-17 14:11

after searching all over google for vsvim lookahead or lookbehind and on the wiki I can\'t seem to figure out how, or if it even supports lookahead or lookbehind (positives

2条回答
  •  攒了一身酷
    2021-01-17 15:14

    I want to expand on the excellent answer from @briansrls. I was looking for a more robust solution that could handle multi-word phrases, wildcards (for potential gaps between phrases) and alternatives (i.e., patterns):

    Without wildcards:

      Positive Lookahead:  \(find this\)\(followed by this\|or that\)\@=
      Negative Lookahead:  \(find this\)\(not followed by this\|or that\)\@!
      Positive Lookbehind: \(preceded by this\|or that\)\@<=\(find this\)
      Negative Lookbehind: \(not preceded by this\|or that\)\@

    With wildcards:

      Positive lookahead:  \(find this\)\(.*\(eventually followed by this\|or that\)\)\@=
      Negative lookahead:  \(find this\)\(.*\(not eventually followed by this:\|or that\)\)\@!
      Positive lookbehind: \(\(eventually preceded by this\|or that\).*\)\@<=\(find this\) 
      Negative lookbehind: \(\(not eventually preceded by this\|or that\).*\)\@

    Note: For the wildcard versions, the extra parentheses are required so that the wildcard is excluded from the alternatives group, but is included in the lookaround group. This prevents duplicating the wildcards for every alternative. One could also use \zs & \ze to avoid the extra parentheses, but I find this method slightly more intuitive.

    For more information:

    • Basic: https://www.cheatography.com/fievel/cheat-sheets/vim-regexp/
    • Advanced: http://vimdoc.sourceforge.net/htmldoc/pattern.html

    Update: It appears that \zs & \ze are not yet implemented in VsVim as of this time.

提交回复
热议问题