有时候需要匹配linux中的通配符,例如*和?,它们的含义为: *:匹配0个或多个字符; ?:匹配任意单个字符。这和正则表达式中含义不一样,在正则表达式中: *:匹配前一个字符0次或者多次; ?:匹...

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


基础教程推荐
猜你喜欢
- Python爬虫爬取属于自己的地铁线路图 2023-08-05
- MySQL数据优化-多层索引 2023-08-11
- 云服务器Ubuntu更改默认python版本 2023-09-03
- 创建python虚拟环境(在ubuntu16.04中) 2023-09-04
- Python+OpenCV实战之实现文档扫描 2022-10-20
- linux 安装 python3 2023-09-03
- python验证多组数据之间有无显著差异 2023-08-08
- 远程和Ubuntu服务器进行Socket通信,使用python和C#(准备篇) 2023-09-05
- windows下面使用多版本Python安装指定版本的虚拟环境 2023-09-04
- 使用Pycharm创建一个Django项目的超详细图文教程 2022-09-02