【发布时间】:2014-06-02 16:15:01
【问题描述】:
我正在尝试找出用于搜索目录并返回目录中没有特定前缀“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 包来完成这项工作。我只是在 python shell 中使用 re.compile 和搜索来找出正则表达式。
【问题讨论】:
-
我不会为此使用正则表达式。只需
os.walk和纯python -
您可以编写一个正则表达式来测试单个文件名是否与您的模式匹配,但正则表达式并不擅长计算事物。您需要遍历文件并测试每个文件,然后自己计算它们。