检查匹配regexp的文件是否在目录中

时间:2015-07-26 13:02:43

标签: python regex

我想检查目录中是否有与特定表达式匹配的文件。我的文件名由标识符和附加的单个字母组成。

  • 标识符 不区分大小写
  • 其他符号不区分大小写

此外,它们可以用_-之类的符号分隔。

例如:对于给定的标识符AC1C和符号A,我想检查是否有名为的文件:

  • ac1cA.txt
  • ac1c-A.txt
  • ac1c_A.txt
  • AC1CA.txt
  • AC1C-A.txt
  • AC1C_A.txt

但不是:

  • ac1c-a.txt

我宁愿用某种正则表达式检查它,而不是分别检查六个条件。我正在使用python 2.7

3 个答案:

答案 0 :(得分:0)

您可以使用此正则表达式检查目录中匹配的文件

!pathexe!

答案 1 :(得分:0)

您可以尝试以下代码

import re
string_sample = '''ac1cA.txt
ac1c-A.txt
ac1c_A.txt
AC1CA.txt
AC1C-A.txt
AC1C_A.txt'''

pattern = '[Aa][Cc][0-9][cC][-_]?A\.txt'
print re.findall(pattern, string_sample)

答案 2 :(得分:0)

如果您的文件位于files_dir

,则可以选择此选项
import os
import re
import glob

def fmatch(id, symb, filenames):
    """ Determine if a file containing ID and symb exists in filenames."""
    patt = '{}|{}[-_]?{}'.format(id.upper(), id.lower(), symb)
    return any((re.match(patt, os.path.basename(filename)) for filename in filenames))

files_dir = 'testdir'
# List of .txt files in files_dir
filenames = glob.glob(os.path.join(files_dir,'*.txt'))

id, symb = 'ac1c', 'A'

print fmatch(id, symb, filenames)
相关问题