zoukankan      html  css  js  c++  java
  • python匹配linux通配符

    有时候需要匹配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)]
  • 相关阅读:
    实验4
    实验3
    第七章例7-14
    第七章例7-13
    第七章例7-12
    第七章例7-11
    第七章例7-10
    diyiti
    disanti
    第二题
  • 原文地址:https://www.cnblogs.com/lucky-heng/p/9940238.html
Copyright © 2011-2022 走看看