Eu quero encontrar todas as instâncias de "índice" não seguidas por .php em um log usando less
. /index(?!\.php)
não funciona. Isso é possível? Qual é o regex para menos e vim (eles diferem?). Isso não é possível com as respectivas bibliotecas de expressões regulares do aplicativo?
vim
regular-expression
less
Gregg Leventhal
fonte
fonte
Respostas:
Em
vim
, você pode fazer assim:Para mais detalhes, no modo de comando, tente
:h \@
:fonte
\@<!
\(some\)\@<!thing
irá corresponderthing
eeverything
enothing
, mas nãosomething
.(?!\.php)
é um operador perl regexp.less
geralmente usa a API POSIX regexp do sistema, de modo que as expressões regulares estendidas do GNU em um sistema GNUvim
usamvim
expressões regulares.Em
vim
, como já mostrado por cuonglm, o equivalente aindex(?!\.php)
seriaindex\(\.php\)\@!
ou\vindex(\.php)@!
.Pois
less
, em tempo de compilação, você pode escolher a biblioteca / API regex e, como resultado, o tipo de expressão regular a ser usado:Por padrão, porém,
less
usará o POSIXregcomp
com REG_EXTENDED, para que você obtenha as expressões regulares estendidas do seu sistema, geralmente algo semelhante aogrep -E
.No regexp estendido do GNU, não há um operador equivalente para trás ou para frente.
Você poderia fazer da maneira mais difícil:
Com
less
, você pode usar a&
tecla para filtrar as linhas que contêmindex.php
(&!index\.php
) e depois procurarindex
(/index
). (você ainda sentiria falta das outras instânciasindex
que aparecem em uma linha que também contémindex.php
).fonte
less
usa depende do tempo de compilação.less
utilizaPCRE
analisando a saída deldd $(which less)
. Mas com outra biblioteca, você conhece alguma maneira de verificar?less --version
.less --verion
, com , ele só imprimeless 444
junto com Copyright.