我一直在阅读有关glob
的文档的一些内容,但我在一件事上有点迷失。令我感到困惑的是fnmatch
,文档显示它允许搜索字符串模式,类似于re
但具有不同的通配符。
字符串中的星号何时是通配符?什么时候不是?它取决于我导入的软件包吗?
我是否必须为特定目的导入特定的包有关字符串,还是有一些通用的通配符?
我正在查看此页Google Python for Education,其中\w
是单词字符的通配符。那么有多个通配符?或者那个只存在于正则表达式中吗?
答案 0 :(得分:1)
好的,我希望我的回答不会太基于意见。
fnmatch
和glob
使用通配符表示法进行文件名匹配。它与正则表达式有一些相似之处,但它有所不同。
wildcards主要用于匹配文件名(例如:*.txt
,foo-[0-9].bin
),使用起来更简单,也更受限制。
regular expressions功能更强大,可以查找/匹配/提取复杂模式。它们“过度杀伤”并且不方便通过扩展名匹配文件名:
的示例:
匹配所有.txt
分机的文件:
*.txt
.*\.txt$
匹配以数字开头的所有文件名:
[0-9]*
^\d.*
匹配以轴承.h或.c扩展名开头的文件:
a*.[ch]
^a.*\.[ch]$
您可以使用fnmatch
作为穷人的正则表达式测试程序,在程序中进行文本过滤,因此熟悉文件模式的用户将知道如何使用自定义过滤器。