我想編寫一個實用程序函數/模塊,它將爲字符串提供簡單的通配符/ glob匹配。我不使用正則表達式的原因是,用戶將是最終提供模式以使用某種配置文件進行匹配的人。我找不到任何這種穩定的寶石 - 嘗試了小丑,但它有問題設置。Ruby中的通配符字符串匹配
我正在尋找的功能很簡單。例如,給定以下模式,這裏是匹配:
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...
我希望這樣做盡可能高效。我想從模式字符串中創建正則表達式,但在運行時看起來效率相當低。有關此實施的任何建議?謝謝。
編輯:我使用Ruby 1.8.7
我想在'「* hn''例如,他需要'」的情況下,約翰是awesome''以'/.* hn $ /'不匹配 –
似乎並不是我的電腦上運行的方式(Mac OSX Leopard)https://gist.github.com/1041942 –
I假設通配符比glob更準確,我的目的 - 對於'* hn''我喜歡e事前和事後的一切 - 匹配的模式,以及之後的事情;所以'john''是'true',''john是''false'是''。謝謝 – sa125