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