Python Regex:查找没有特定扩展名的文件

时间:2014-06-02 16:15:02

标签: python regex parsing

我正在尝试找出要用于搜索目录的正则表达式,并返回目录中没有特定前缀'abc_'的文件数。例如,在包含文件def_notes.txt,abc_notes.txt,ghi_notes.txt的目录中,该函数将识别出有两个没有'abc_'前缀的文件并返回2.

为了达到目的,我在编写正则表达式时遇到了麻烦。我已经尝试了re.compile('^(。(?!(abc _)))* $'),我找到了here。但是,这似乎不起作用。将第一个点留在括号内实际上匹配文件'abc_notes.txt'。如果我删除该点,它将与'abc_notes.txt'不匹配,但它也与'def_notes.txt'不匹配。

编辑:为了澄清,一旦我找出表达式,我将使用glob或os包来完成工作。我只是使用re.compile并在python shell中搜索以找出正则表达式。

1 个答案:

答案 0 :(得分:0)

此代码打印出当前目录中有多少文件不以字母z开头:

import glob, re

print len( [path for path in glob.glob('*')
            if not path.startswith('z')
            ]
           )

以下代码使用正则表达式。它匹配字符串开头的字母“z” - 然后使用(?!...)语法反转匹配。

pat = re.compile('^(?!z)')
print len( filter(None, map(pat.match, glob.glob('*'))) )