Saya mencoba membuat skrip untuk melakukan pencarian fuzzy di dalam buffer. Gagasan utamanya adalah mengambil beberapa input, dan menyisipkan di .\{-}
antara setiap pasangan karakter, misalnya foo
menjadi f.\{-}o.\{-}o
.
Ini bekerja cukup baik, tetapi muncul dengan banyak pertandingan yang tidak ideal. Saya pikir pencarian fuzzy harus menghasilkan kecocokan terpendek terlebih dahulu. Perhatikan contoh berikut:
public void put()
Melakukan pencarian fuzzy untuk put
(jadi, p.\{-}u.\{-}t
) akan cocok dengan seluruh string public void put
, tetapi lebih pendek put
dalam pertandingan itu akan lebih berguna.
Operator yang tidak rakus itu pandai menemukan kecocokan yang berakhir lebih awal, tetapi saya perlu sesuatu yang, pada saat yang sama, lebih suka kecocokan yang dimulai nanti. Secara konseptual, itu harus tidak rakus di kedua arah. Apakah ini mungkin?
sumber
Jawaban:
Tidak ada cukup contoh tetapi saya pikir ini melakukan apa yang Anda inginkan.
akan cocok
put
dengan contoh Anda, bukanpublic void put
. Pada dasarnya.*
memaksa mesin regex untuk mulai mencari string ke belakang, karena.*
mengkonsumsi seluruh string terlebih dahulu kemudian backtracks, untuk menemukan kecocokan terbaru darip.\{-}u.\{-}t
sumber
pouty puppet
menghasilkan dua pertandingan.