對於檔案的搜尋,我們可以透過glob或是fnmatch的方式進行。但是如果只是比對字串,是不是也能用同樣的wildcard語法呢?其實,一切遠比你想的簡單。因為fnmatch有提供一個叫做translate的方法,可以把用來比對的wildcard字串,轉換成為regexp。去看看fnmatch module的文件,你就會看到一個說明如何使用的範例了。我將這個範例修改一下,使他變得更容易使用。
[][1]
import fnmatch, re
def wildcard_match(wildcard, *string_list):
"""Wildcard-style string match function.
:param wildcard: the wildcard string.
:param string_list: The list of string to be search.
:return: The result is a list which contains the matched strings.
If no string matched, an empty list will be returned.
"""
regex = fnmatch.translate(wildcard)
pattern = re.compile(regex)
matched_list = []
for s in string_list:
if pattern.match(s):
matched_list.append(s)
return matched_list
[1]: