Chciałbym napisać funkcję/moduł narzędzia, który zapewni proste dopasowanie symboli wieloznacznych do ciągów. Powodem, dla którego nie używam wyrażeń regularnych, jest to, że użytkownik będzie tym, który w końcu dostarczy wzorce do dopasowania za pomocą jakiegoś pliku konfiguracyjnego. Nie mogłem znaleźć takiego klejnotu, który byłby stabilny - próbował jokera, ale miał problemy z konfiguracją.Dopasowywanie ciągów znaków wieloznacznych w Ruby
Funkcja, której szukam, jest prosta. Na przykład, biorąc pod uwagę następujące wzorce, tutaj są dopasowania:
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...
Chciałbym, aby było tak wydajnie, jak to możliwe. Myślałem o tworzeniu wyrażeń regularnych z ciągów znaków, ale w środowisku wykonawczym było to raczej nieefektywne. Wszelkie sugestie dotyczące tej implementacji? dzięki.
EDIT: Używam Ruby 1.8.7
myślę, że w przypadku '„* hn'' na przykład, że potrzebuje '” John awesome'' zwrócić także true, a przy '/.* hn $ /' nie będzie pasować –
Nie wydaje się być tak jak globs działa na moim komputerze (Mac OSX Leopard) https://gist.github.com/1041942 –
I załóżmy, że symbol wieloznaczny jest dokładniejszy niż glob dla mojego celu - dla przypadku na '' * hn'' chciałbym e wszystko przed i do wzorca do dopasowania, i nic po; więc 'true' dla' 'john'',' false' for ''john is ..''. dzięki – sa125