在目录中查找名称中带有特殊字符的文件

时间:2019-06-12 14:58:54

标签: python regex

我试图在名称为-,即/0.12345/Name-001-011的目录中查找文件。部分代码就是这样

mypath = '.'
pattern = '\d\.\d*/Name*/NameofFile'
fileList = []

for directory, dirnames, filenames in os.walk(mypath):
   for name in filenames:

     if re.search(pattern,os.path.join(directory,name)):
         fileList.append(os.path.join(directory,name))

但不幸的是,它找不到文件,并且我意识到问题出在路径中-

2 个答案:

答案 0 :(得分:1)

问题是Name之后的正则表达式模式中缺少点。正确的模式如下:

/\d\.\d*/Name.*/NameofFile

正如注释中指出的那样,通过编写Name*,您告诉引擎匹配字符e的0个或多个重复。相反,您想要的是匹配Name之后的所有内容,这由.*实现,其中点代表除换行符之外的任何字符。

答案 1 :(得分:1)

我猜我们期望的输出将是Name-001-011,这个简单的表达式将捕获以下内容:

/[0-9]+\.[0-9]+/(.+)

Demo 1

如果我们想添加Name作为边界并捕获数字,我们可以尝试:

/[0-9]+\.[0-9]+/Name-(.+)

或:

/[0-9]+\.[0-9]+/(Name-.+)

或:

/[0-9]+\.[0-9]+/(Name-[0-9]+-[0-9]+)

Demo 2