【发布时间】:2018-05-15 17:27:32
【问题描述】:
假设一个初始 (Unix) 路径 [segment] 像 /var/log。在此路径下,可能有一整棵目录树。用户使用 Unix shell 样式的通配符为文件夹名称提供模式,例如*var*。遵循初始路径 [segment] 下的模式的文件夹应使用正则表达式进行匹配,将完整路径作为输入,即必须从匹配中排除初始路径段。
我将如何构建一个正则表达式来做到这一点?
我正在使用 Python,它提供 fnmatch 模块为 part of its standard library。 fnmatch 提供了一个 translate 方法,它将使用 Unix shell 样式通配符指定的模式转换为正则表达式:
>>> fnmatch.translate('*var*')
'(?s:.*var.*)\\Z'
我想用它来构建我的正则表达式。
匹配的输入路径可能如下所示:
- /var/log/foo/var/bar
- /var/log/foo/avarb/bar
- /var/log/var/
不匹配的输入路径可能如下所示:
- /var/log
- /var/log/foo/bar
根本问题是我必须向第三方模块pyinotify 提供正则表达式作为输入。我无法通过仅剥离初始路径段然后与其余部分匹配来解决此问题...
【问题讨论】:
标签: python regex path directory pyinotify