Estou tentando criar um script para executar a pesquisa difusa dentro de um buffer. A idéia principal é pegar alguma entrada e inserir .\{-}
entre cada par de caracteres, por exemplo, foo
torna-se f.\{-}o.\{-}o
.
Isso funciona bastante bem, mas gera muitas correspondências não ideais. Acho que uma pesquisa difusa deve produzir as correspondências mais curtas primeiro. Considere o seguinte exemplo:
public void put()
Fazer uma pesquisa difusa por put
(então, p.\{-}u.\{-}t
) corresponderá a toda a cadeia public void put
, mas a menor put
dentro dessa correspondência seria mais útil.
O operador não ganancioso é bom em encontrar correspondências que terminam mais cedo, mas eu preciso de algo que possa, ao mesmo tempo, preferir correspondências que começam mais tarde. Conceitualmente, não deve ser ganancioso nas duas direções. Isso é possível?
fonte
Respostas:
Não há exemplos suficientes, mas acho que isso faz o que você deseja.
corresponderia
put
no seu exemplo em vez depublic void put
. Basicamente,.*
obriga o mecanismo regex a começar a pesquisar a string para trás, pois.*
consome a string inteira primeiro e depois recua, para encontrar a última correspondência dep.\{-}u.\{-}t
fonte
pouty puppet
de render duas partidas.