Quiero encontrar todas las instancias de "índice" no seguidas por .php en un registro usando less
. /index(?!\.php)
No funciona. es posible? ¿Cuál es la expresión regular para less y vim (¿difieren?). ¿No es esto posible con las bibliotecas de expresiones regulares respectivas de estas aplicaciones?
vim
regular-expression
less
Gregg Leventhal
fuente
fuente
Respuestas:
En
vim
, puedes hacer así:Para más detalles, en modo comando, intente
:h \@
:fuente
\@<!
\(some\)\@<!thing
coincidirá conthing
yeverything
ynothing
, pero nosomething
.(?!\.php)
es un operador perge regexp.less
generalmente usa la API de expresión regular POSIX del sistema, por lo que generalmente las expresiones regulares extendidas de GNU en un sistema GNUvim
usanvim
expresiones regulares.En
vim
, como ya se muestra por cuonglm, el equivalente deindex(?!\.php)
seríaindex\(\.php\)\@!
o\vindex(\.php)@!
.Para
less
, en el momento de la compilación, puede elegir la biblioteca / API de expresiones regulares y, como resultado, el tipo de expresiones regulares que se utilizará:Sin embargo, de manera predeterminada,
less
usará POSIXregcomp
con REG_EXTENDED, por lo que obtendrá las expresiones regulares extendidas de su sistema, por lo que generalmente es algo similar a congrep -E
.En GNU Extended regexp, no hay un operador equivalente de mirar hacia atrás o mirar hacia adelante.
Podrías hacerlo de la manera difícil:
Con
less
, posiblemente podría usar la&
tecla para filtrar las líneas que contienenindex.php
(&!index\.php
) y luego buscarindex
(/index
). (aún extrañaría las otras instanciasindex
que aparecen en una línea que también contieneindex.php
).fuente
less
utiliza depende del tiempo compilado.less
usaPCRE
analizando la salida deldd $(which less)
. Pero con otra biblioteca, ¿conoce alguna forma de verificar?less --version
.less --verion
, solo imprimeless 444
junto con Copyright.