Je voudrais écrire une fonction/un module utilitaire qui fournira une simple correspondance générique/glob à des chaînes. La raison pour laquelle je n'utilise pas d'expressions régulières est que l'utilisateur sera celui qui finira par fournir les modèles à faire correspondre en utilisant un certain type de fichier de configuration. Je ne pouvais pas trouver un tel gem qui est stable - joker essayé, mais il a eu des problèmes de configuration.Chaîne de caractère générique correspondant dans Ruby
La fonctionnalité que je recherche est simple. Par exemple, étant donné les modèles suivants, voici les correspondances:
pattern | test-string | match
========|=====================|====================
*hn | john, johnny, hanna | true , false, false # wildcard , similar to /hn$/i
*hn* | john, johnny, hanna | true , true , false # like /hn/i
hn | john, johnny, hanna | false, false, false # /^hn$/i
*h*n* | john, johnny, hanna | true , true , true
etc...
Je voudrais que ce soit aussi efficace que possible. J'ai pensé à créer des regex à partir des chaînes de pattern, mais cela semblait plutôt inefficace à faire à l'exécution. Des suggestions sur cette implémentation? Merci.
EDIT: J'utilise Ruby 1.8.7
Je pense que dans le cas de ' « * hn'' par exemple, il a besoin ' » john est awesome'' pour retourner vrai aussi, et avec '/.* hn $ /' ne correspondra pas –
Ne semble pas être la façon dont les globs fonctionnent sur mon ordinateur (Mac OSX Leopard) https://gist.github.com/1041942 –
I supposons que le joker est plus précis que glob pour mon but - pour le cas sur ''* hn' e tout avant et jusqu'à-le modèle pour correspondre, et rien après; donc 'true' pour' 'john'',' false' pour '' john is .. ''. merci – sa125