我如何知道使用哪个通配符?

时间:2016-11-22 19:54:49

标签: python python-3.x wildcard

我一直在阅读有关glob的文档的一些内容,但我在一件事上有点迷失。令我感到困惑的是fnmatch,文档显示它允许搜索字符串模式,类似于re但具有不同的通配符。

字符串中的星号何时是通配符?什么时候不是?它取决于我导入的软件包吗?

我是否必须为特定目的导入特定的包有关字符串,还是有一些通用的通配符?

我正在查看此页Google Python for Education,其中\w是单词字符的通配符。那么有多个通配符?或者那个只存在于正则表达式中吗?

1 个答案:

答案 0 :(得分:1)

好的,我希望我的回答不会太基于意见。

fnmatchglob使用通配符表示法进行文件名匹配。它与正则表达式有一些相似之处,但它有所不同。

wildcards主要用于匹配文件名(例如:*.txtfoo-[0-9].bin),使用起来更简单,也更受限制。

regular expressions功能更强大,可以查找/匹配/提取复杂模式。它们“过度杀伤”并且不方便通过扩展名匹配文件名:

的示例:

匹配所有.txt分机的文件:

  • 通配符:*.txt
  • 正则表达式:.*\.txt$

匹配以数字开头的所有文件名:

  • 通配符:[0-9]*
  • 正则表达式:^\d.*

匹配以轴承.h或.c扩展名开头的文件:

  • 通配符:a*.[ch]
  • 正则表达式:^a.*\.[ch]$
高级用户更容易掌握第一个,而后者对脚本编写者更有用。程序员,(并且还允许从文本中提取部分,也称为)。

您可以使用fnmatch作为穷人的正则表达式测试程序,在程序中进行文本过滤,因此熟悉文件模式的用户将知道如何使用自定义过滤器。

详细了解此帖中的差异:https://unix.stackexchange.com/questions/57957/how-do-regular-expressions-differ-from-wildcards-used-to-filter-files