J'essaie de créer un script pour effectuer une recherche floue dans un tampon. L'idée principale est de prendre une entrée et d'insérer .\{-}
entre chaque paire de caractères, par exemple foo
devient f.\{-}o.\{-}o
.
Cela fonctionne assez bien, mais propose de nombreuses correspondances non idéales. Je pense qu'une recherche floue devrait donner les correspondances les plus courtes en premier. Prenons l'exemple suivant:
public void put()
Faire une recherche floue pour put
(donc p.\{-}u.\{-}t
) correspondra à la chaîne entière public void put
, mais le plus court put
dans cette correspondance serait plus utile.
L'opérateur non gourmand est bon pour trouver des correspondances qui se terminent plus tôt, mais j'ai besoin de quelque chose qui puisse, en même temps, préférer des correspondances qui commencent plus tard. Conceptuellement, il devrait être non gourmand dans les deux sens. Est-ce possible?
la source
Réponses:
Il n'y a pas assez d'exemples mais je pense que cela fait ce que vous voulez.
correspondrait
put
dans votre exemple au lieu depublic void put
. Fondamentalement, cela.*
force le moteur d'expression régulière à commencer à rechercher la chaîne en arrière, car le.*
consomme d'abord la chaîne entière, puis revient en arrière, pour trouver la dernière correspondance dep.\{-}u.\{-}t
la source
pouty puppet
donne deux matchs.