我希望type_dir是可选目录。
我使用搜索。可以吗? 我需要使用try ... except块吗?
import re
pattern = r'mydir/.*(\w*).*/\[{type_dir}\]/'.format(type_dir="")
例如,
type_dir = b
mydir/a/b/c - True
mydir/a/c - True
答案 0 :(得分:0)
据我所知,您想使用正则表达式找到一种方法来检查某个目录是否存在,其中任何子目录都是可选的。
因此,我的回答是您不需要使用try... except
,并且搜索非常好。一种更快的搜索方式是使用glob
python模块,如下所示:
注意:mydir
中的文件夹层次结构如下:
>>> import os
>>> from glob import glob
>>>
>>> type_dir = "b"
>>> print(glob(os.path.join("mydir", "**", type_dir), recursive=True))
['mydir/a/b']
>>>
>>> type_dir = "c"
>>> print(glob(os.path.join("mydir", "**", type_dir), recursive=True))
['mydir/a/c', 'mydir/a/b/c']
>>>
>>> type_dir = "d"
>>> print(glob(os.path.join("mydir", "**", type_dir), recursive=True))
答案 1 :(得分:0)
可选字符串表示该字符串匹配零或一次。 ?
有一个符号,请参见RE syntax。
re.fullmatch的RE字符串应为
/dir/(subdir/)?file
,并且将与/dir/subdir/file
和/dir/file
匹配,并且没有其他内容。
为完整起见:所有可选子目录的基本RE为:
/dir/(.*/)?file
将直接在目录/dir/file
或某个子目录/dir/sub/file
中匹配文件,甚至在/dir/sub1/sub2/file
的多个级别中也是如此。
如果仅要将可选子目录限制为一个级别,则:
/dir/([^/]*/)?file