我怎么知道要使用哪个通配符?
How do I know which wildcard to use?
我一直在阅读 glob
的文档,但我对一件事有点迷茫。令我困惑的是 fnmatch
,文档显示它允许创建要搜索的字符串模式,类似于 re
但具有不同的通配符表示法。
什么时候字符串中的星号是通配符?什么时候不是?这取决于我导入了哪些包吗?
我是否必须为特定的字符串目的导入特定的包,或者是否有一些通用的通配符?
我正在查看此页面 Google Python for Education,它说 \w
是单词字符的通配符。那么有不止一个通配符吗?或者那个只适用于正则表达式?
好的,我希望我的回答不会过于主观。
fnmatch
和 glob
使用通配符进行文件名匹配。它与正则表达式有一些相似之处,但又有所不同。
wildcards主要用于匹配文件名(例如:*.txt
、foo-[0-9].bin
),使用起来更简单,也更受限制。
regular expressions比较强大,可以find/match/extract复杂的图案。它们 "overkill" 并且不方便通过扩展名匹配文件名:
示例:
匹配所有扩展名为 .txt
的文件:
- 通配符:
*.txt
- 正则表达式:
.*\.txt$
匹配所有以数字开头的文件名:
- 通配符:
[0-9]*
- 正则表达式:
^\d.*
匹配以 .h 或 .c 扩展名开头的文件:
- 通配符:
a*.[ch]
- 正则表达式:
^a.*\.[ch]$
第一个更容易被高级用户掌握,而后者对脚本编写者和程序员更有用,(并且还允许从文本)。
您可以将 fnmatch
用作程序中文本过滤的穷人正则表达式测试器,这样熟悉文件模式的用户将知道如何使用您的自定义过滤器。
详细了解此 post 中的差异:https://unix.stackexchange.com/questions/57957/how-do-regular-expressions-differ-from-wildcards-used-to-filter-files
我一直在阅读 glob
的文档,但我对一件事有点迷茫。令我困惑的是 fnmatch
,文档显示它允许创建要搜索的字符串模式,类似于 re
但具有不同的通配符表示法。
什么时候字符串中的星号是通配符?什么时候不是?这取决于我导入了哪些包吗?
我是否必须为特定的字符串目的导入特定的包,或者是否有一些通用的通配符?
我正在查看此页面 Google Python for Education,它说 \w
是单词字符的通配符。那么有不止一个通配符吗?或者那个只适用于正则表达式?
好的,我希望我的回答不会过于主观。
fnmatch
和 glob
使用通配符进行文件名匹配。它与正则表达式有一些相似之处,但又有所不同。
wildcards主要用于匹配文件名(例如:*.txt
、foo-[0-9].bin
),使用起来更简单,也更受限制。
regular expressions比较强大,可以find/match/extract复杂的图案。它们 "overkill" 并且不方便通过扩展名匹配文件名:
示例:
匹配所有扩展名为 .txt
的文件:
- 通配符:
*.txt
- 正则表达式:
.*\.txt$
匹配所有以数字开头的文件名:
- 通配符:
[0-9]*
- 正则表达式:
^\d.*
匹配以 .h 或 .c 扩展名开头的文件:
- 通配符:
a*.[ch]
- 正则表达式:
^a.*\.[ch]$
第一个更容易被高级用户掌握,而后者对脚本编写者和程序员更有用,(并且还允许从文本)。
您可以将 fnmatch
用作程序中文本过滤的穷人正则表达式测试器,这样熟悉文件模式的用户将知道如何使用您的自定义过滤器。
详细了解此 post 中的差异:https://unix.stackexchange.com/questions/57957/how-do-regular-expressions-differ-from-wildcards-used-to-filter-files