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