Chcę znaleźć wszystkie wystąpienia „indeksu”, po których nie następuje .php w dzienniku za pomocą less
. /index(?!\.php)
nie działa. czy to możliwe? Co to jest regex dla less i vim (czy się różnią?). Czy nie jest to możliwe w przypadku bibliotek wyrażeń regularnych tych aplikacji?
vim
regular-expression
less
Gregg Leventhal
źródło
źródło
Odpowiedzi:
W
vim
możesz zrobić tak:Aby uzyskać więcej informacji, w trybie komend spróbuj
:h \@
:źródło
\@<!
\(some\)\@<!thing
dopasujething
ieverything
anothing
, ale niesomething
.(?!\.php)
jest operatorem regularnym perla.less
zazwyczaj używa systemowego wyrażenia regularnego POSIX, więc zwykle rozszerzone wyrażenia regularne GNU w systemie GNUvim
używająvim
wyrażeń regularnych.W
vim
, jak już pokazano przez cuonglm, odpowiednikiemindex(?!\.php)
byłobyindex\(\.php\)\@!
lub\vindex(\.php)@!
.W
less
czasie kompilacji możesz wybrać bibliotekę wyrażeń regularnych / interfejs API, a tym samym typ wyrażeń regularnych do użycia:Jednak domyślnie
less
użyje POSIX-aregcomp
z REG_EXTENDED, więc otrzymasz rozszerzone wyrażenia regularne swojego systemu, więc zwykle coś podobnego jak zgrep -E
.W rozszerzonym wyrażeniu regularnym GNU nie ma równoważnego spojrzenia za siebie ani operatora patrzenia w przyszłość.
Możesz to zrobić na własnej skórze:
Za
less
pomocą&
klawisza można ewentualnie odfiltrować wiersze zawierająceindex.php
(&!index\.php
), a następnie wyszukaćindex
(/index
). (nadal będziesz tęsknić za innymi przypadkami,index
które pojawiają się w wierszu zawierającymindex.php
).źródło
less
używana biblioteka regex zależy od czasu kompilacji.less
używaPCRE
, analizując dane wyjścioweldd $(which less)
. Ale czy w przypadku innej biblioteki znasz jakiś sposób na sprawdzenie?less --version
.less --verion
drukuje tylkoless 444
wraz z prawami autorskimi.