Python對字串使用wildcard的比對

對於檔案的搜尋,我們可以透過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]:

comments powered by Disqus