1. 程式人生 > >python匹配linux通配符

python匹配linux通配符

使用 通配 linux def linux中 pytho 們的 匹配 表示

有時候需要匹配linux中的通配符,例如*和?,它們的含義為:

*:匹配0個或多個字符;

?:匹配任意單個字符。

這和正則表達式中含義不一樣,在正則表達式中:

*:匹配前一個字符0次或者多次; 

?:匹配前一個字符1次。

這時候可以使用下面的函數,s表示需要匹配的字符串,p表示含有通配符的字符串。

def match_wildcard(s, p):
    dp = [[False for i in range(len(p) + 1)] for j in range(len(s) + 1)]
    dp[0][0] = True
 
    for i in range(1, len(p) + 1):
        
if p[i - 1] == *: dp[0][i] = dp[0][i - 1] for i in range(1, len(s) + 1): for j in range(1, len(p) + 1): if p[j - 1] == *: dp[i][j] = dp[i][j - 1] or dp[i - 1][j - 1] or dp[i - 1][j] else: dp[i][j] = (s[i - 1] == p[j - 1] or
p[j - 1] == ?) and dp[i - 1][j - 1] return dp[len(s)][len(p)]

python匹配linux通配符