码迷,mamicode.com
首页 > 编程语言 > 详细

python匹配linux通配符

时间:2018-11-10 20:06:20      阅读:199      评论:0      收藏:0      [点我收藏+]

标签:als   mat   字符   for   表达   含义   ==   linux通配符   match   

有时候需要匹配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通配符

标签:als   mat   字符   for   表达   含义   ==   linux通配符   match   

原文地址:https://www.cnblogs.com/lucky-heng/p/9940238.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!