我正在尝试找出要用于搜索目录的正则表达式,并返回目录中没有特定前缀'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中搜索以找出正则表达式。
答案 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('*'))) )