为什么要为magic_check使用正则表达式[*?[]?

时间:2013-12-22 07:09:20

标签: python regex shell glob

Python的 glob 模块中的正则表达式,大约第92行,

magic_check = re.compile('[*?[]')

我假设这是为了检查一个模式是否在内部有*?,这在许多shell上下文中经常使用。但是[呢? bash或其他常用shell中[的含义是什么?或者[在正则表达式中有特殊功能吗?

2 个答案:

答案 0 :(得分:2)

[和[[用于在bash中创建条件表达式,它们通常用于if和while语句中。如果您在bash中键入help [,它有助于解释它们的工作原理。

修改 我刚刚意识到这是在globbing的背景下。在这种情况下,适当的含义是,在bash中,您可以使用globs中的字符类,与正则表达式中的字符类类似。例如:file_[0-9].txt将匹配file_0.txt,file_1.txt等

答案 1 :(得分:0)

在文件名glob中,[a-c]匹配ac之间的字符:abc

示例:

$ touch a
$ touch b
$ touch c
$ touch d
$ ls [a-c]
a  b  c