Me gustaría escribir una función/módulo de utilidad que proporcione una combinación de comodín/comodín simple para las cadenas. La razón por la que no estoy usando expresiones regulares es que el usuario será quien termine proporcionando los patrones para que coincidan utilizando algún tipo de archivo de configuración. No pude encontrar ninguna gema que sea estable: intenté con el comodín pero tuve problemas para configurarlo.Coincidencia de cadena de caracteres comodín en Ruby
La funcionalidad que estoy buscando es simple. Por ejemplo, dados los siguientes patrones, aquí están las coincidencias:
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...
Me gustaría que esto sea lo más eficiente posible. Pensé en crear expresiones regulares a partir de las cadenas de patrones, pero parecía bastante ineficiente de hacer en tiempo de ejecución. ¿Alguna sugerencia sobre esta implementación? Gracias.
EDITAR: estoy usando ruby 1.8.7
creo que en el caso de ' '* hn'' por ejemplo, que necesita'' John es awesome'' para que también sea verdadero, y con '/.* hn $ /' no coincidirá con –
No parece ser la forma en que los globs funcionan en mi computadora (Mac OSX Leopard) https://gist.github.com/1041942 –
I supongo que el comodín es más preciso que glob para mi propósito - para el caso de ''* hn'' me gustaría e todo antes y después del patrón para que coincida, y nada después; tan 'verdadero' para' 'john'',' falso' para ''john es ..''. gracias – sa125