【问题标题】:Why use regular expression [*?[] for magic_check ?为什么对 magic_check 使用正则表达式 [*?[] ?
【发布时间】:2014-01-10 16:51:14
【问题描述】:

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

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

我假设这是为了检查一个模式是否有字符 *? 内部,这在许多 shell 上下文中经常使用。但是[ 呢? bash或其他常用shell中[是什么意思?还是[在正则表达式中有特殊作用?

【问题讨论】:

  • 在非 java 类中看到未转义的左括号真的让我很恼火。视觉上令人震惊。

标签: python regex shell glob


【解决方案1】:

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

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

【讨论】:

  • 我知道[ 等价于bash 中的test。但这是否用于文件名通配模式?例如find -name '<some_chars>[<other_chars>'
【解决方案2】:

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

例子:

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

【讨论】:

    猜你喜欢
    • 2013-10-27
    • 2017-01-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-06-28
    • 1970-01-01
    • 2011-06-15
    • 2014-06-08
    相关资源
    最近更新 更多