Je veux trouver toutes les instances de "index" non suivies de .php dans un journal utilisant less
. /index(?!\.php)
ne marche pas. Est-ce possible? Quel est le regex pour less et vim (sont-ils différents?). N'est-ce pas possible avec les bibliothèques regex respectives de ces applications?
vim
regular-expression
less
Gregg Leventhal
la source
la source
Réponses:
Dans
vim
, vous pouvez faire comme ceci:Pour plus de détails, en mode commande, essayez
:h \@
:la source
\@<!
\(some\)\@<!thing
correspondra àthing
eteverything
etnothing
, mais passomething
.(?!\.php)
est un opérateur perge regexp.less
utilise généralement l'API regexp POSIX du système, donc généralement les expressions régulières étendues GNU sur un système GNU,vim
utilisentvim
des expressions régulières.Dans
vim
, comme l'a déjà montré cuonglm, l'équivalent deindex(?!\.php)
seraitindex\(\.php\)\@!
ou\vindex(\.php)@!
.Pour
less
, au moment de la compilation, vous pouvez choisir la bibliothèque / API regex et par conséquent le type regex à utiliser:Par défaut, cependant,
less
utilise POSIXregcomp
avec REG_EXTENDED, vous obtiendrez donc les expressions régulières étendues de votre système, donc généralement quelque chose de similaire à celui degrep -E
.Dans l'expression rationnelle étendue GNU, il n'y a pas d'opérateur de recherche arrière ou d'anticipation équivalent.
Vous pouvez le faire à la dure:
Avec
less
, vous pouvez éventuellement utiliser la&
clé pour filtrer les lignes contenantindex.php
(&!index\.php
), puis rechercherindex
(/index
). (vous manqueriez encore les autres instancesindex
qui apparaissent sur une ligne contenant égalementindex.php
).la source
less
utilise dépend du temps compilé.less
utilisationsPCRE
en analysant la sortie deldd $(which less)
. Mais avec une autre bibliothèque, connaissez-vous un moyen de vérifier?less --version
.less --verion
, il imprime uniquementless 444
avec Copyright.