我有以下文字:
Line 1 : orange blackberry orange coconut
Line 2 : orange
Line 3 : blackberry coconut blackberry
Line 4 : pear orange apricot
我想查找“橙色”仅出现一次的行,即第2行和第4行(对于“ blackberry”,它仅是第1行)。
我尝试使用否定的超前构造(橙色,橙色表示),但失败了……
/orange\(.*orange\)\@!
在第2行和第4行给了我,但正如我应该预见的那样,在第1行给了橙色的第二个实例。
我应该如何进行?
预先感谢
答案 0 :(得分:7)
您可以使用
/\(orange.*\)\@<!orange\(.*orange\)\@!
其中
\(orange.*\)\@<!
-否定的“向后看”,确保在线上当前位置之前没有orange
。orange
-一个orange
子字符串\(.*orange\)\@!
-否定的“前瞻”,可确保在该行的当前位置之后没有orange
。非常魔术模式符号:
/\v(orange.*)@<!orange(.*orange)@!