(?!\.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)。