我如何匹配角撑>但不是>>在vim正则表达式搜索中

时间:2011-09-17 19:16:24

标签: regex vim

我已成功匹配<但未先于(负面后瞻断言)或跟随(负前瞻断言)<

<\@>!<<\@!

但是,当我尝试匹配排除>的单个>>时,以下表达式无效

>\@>!>>\@!

为什么呢?我该如何进行搜索?

1 个答案:

答案 0 :(得分:4)

您的<\@>!<<\@!正则表达式:

  • <\@>! lireraly匹配<\@>!;我认为你的意思是<\@<!
  • <<
  • 相匹配 如果<\@!在当前位置不匹配,则
  • <与零宽度匹配

适用于<\@<!<<\@!

断言后面的负面看法的语法是(atom)\@<!,其中(atom)是你不想匹配的东西。在这种情况下,这是<,因此是<\@<!

负前瞻断言的语法是(atom)\@!,其中(atom)是您不想匹配的内容。在这种情况下,它是<,因此是<\@!

在PCRE中,正则表达式将是:

(?<!<)<(?!<)

另一个正则表达式(>\@>!>>\@!)有效。