如何突出显示没有重复字符串的行?

时间:2014-08-28 13:47:59

标签: regex vim

我正在尝试找一个正则表达式来指示的行有重复的字符串。

输入:

 hi hello  hello hi
hello hi hello hi
 text hello  halo hi
hello  hello hi
 hello  halo hi
hello  hello hi

我想突出显示包含单词hello但在同一行上没有其他hello的所有行。

预期产出:
只有第3行和第5行必须突出显示。

我试过这个正则表达式:

\(hello\)\(.*hello.*\)\@!

但它没有做我想做的事。

当同一条线上没有双重图案时,如何突出显示一条线(或整条线)上的图案?

1 个答案:

答案 0 :(得分:1)

试试这个:

^\(\(.*hello.*\)\{2,}\)\@!.*hello.*$

解释

  • \(。* hello。* \):原子匹配包含hello的句子
  • \(\(foo \)\ {2,} \):原子匹配至少两倍原子\(foo \)
  • \ @! :如果最后一个原子匹配则不匹配
  • 。* hello。*:用hello匹配一个句子
  • ^ $:匹配整行

“匹配整行不包含至少两次hello但包含hello”