(?!\.php)
是perl regexp运算符。less
通常使用系统的POSIX regexp API,因此通常在GNU系统上的GNU扩展正则表达式vim
使用vim
正则表达式。
在vim
,如已经通过cuonglm所示,相当于index(?!\.php)
将是index\(\.php\)\@!
或\vindex(\.php)@!
。
对于less
,在编译时,您可以选择正则表达式库/ API,然后选择要使用的正则表达式类型:
--with-regex={auto,gnu,pcre,posix,regcmp,re_comp,
regcomp,regcomp-local,none}
Select a regular expression library auto
不过,默认情况下,less
它将regcomp
与REG_EXTENDED一起使用POSIX ,因此您将获得系统的扩展正则表达式,因此通常与相似grep -E
。
在GNU扩展的正则表达式中,没有等效的后视或前瞻运算符。
您可以用困难的方式做到这一点:
index($|[^.]|\.($|([^p]|p($|([^h]|h($|[^p]))))))
使用less
,您可以使用&
键过滤出包含index.php
(&!index\.php
)的行,然后搜索index
(/index
)。(您仍然会错过该行的其他实例,index
它们也包含在内index.php
)。