Saya ingin menemukan semua contoh "indeks" tidak diikuti oleh .php di log menggunakan less
. /index(?!\.php)
tidak bekerja. Apakah ini mungkin? Apa regex kurang dan vim (apakah mereka berbeda?). Apakah ini tidak mungkin dengan perpustakaan regex masing-masing aplikasi ini?
vim
regular-expression
less
Gregg Leventhal
sumber
sumber
Jawaban:
Di
vim
, Anda bisa melakukan ini:Untuk detail lebih lanjut, dalam mode perintah, coba
:h \@
:sumber
\@<!
\(some\)\@<!thing
Akan cocokthing
daneverything
dannothing
, tetapi tidaksomething
.(?!\.php)
adalah operator perl regexp.less
umumnya menggunakan POSIX regexp API sistem, jadi biasanya GNU memperluas ekspresi reguler pada sistem GNU,vim
menggunakanvim
ekspresi reguler.Dalam
vim
, seperti yang sudah ditunjukkan oleh cuonglm, padanannyaindex(?!\.php)
adalahindex\(\.php\)\@!
atau\vindex(\.php)@!
.Sebab
less
, pada waktu kompilasi, Anda dapat memilih regex library / API dan sebagai hasilnya tipe regex untuk digunakan:Secara default,
less
akan menggunakan POSIXregcomp
dengan REG_EXTENDED, jadi Anda akan mendapatkan ekspresi reguler yang diperluas dari sistem Anda, jadi biasanya mirip dengangrep -E
.Dalam GNU extended regexp, tidak ada tampilan yang sepadan di belakang atau melihat ke depan operator.
Anda bisa melakukannya dengan cara yang sulit:
Dengan
less
, Anda mungkin dapat menggunakan&
kunci untuk memfilter baris yang berisiindex.php
(&!index\.php
), dan kemudian mencariindex
(/index
). (Anda masih akan melewatkan contoh lainindex
yang muncul pada baris yang juga berisiindex.php
).sumber
less
digunakan tergantung pada waktu yang dikompilasi.less
penggunaanPCRE
dengan menguraikan output darildd $(which less)
. Tetapi dengan perpustakaan lain, apakah Anda tahu cara untuk memeriksanya?less --version
.less --verion
, hanya mencetakless 444
bersama dengan Hak Cipta.