我試圖搜索一個特定的模式,只抓住那些與給定文件夾中的模式對齊的文件。 我需要一些幫助來開發一個匹配兩個模式的正則表達式 - 我似乎無法找到一個匹配兩個模式的匹配。 這是原來的正則表達式我使用:正則表達式python - 抓文件名
r"^([a-zA-Z]+)__?(\d+).(\d+).(\d+)\.xlsx"
這樣做的原因搜索模式,是,我然後提取姓名,日期(DD-MM-YY)和完整文件名到五個變量,這允許我提取包含在指定文件輸入日期的完整文件名稱中的日期。
for name, day, month, year, fullfilename in files
現在我嘗試以下:
files = []
for f in os.listdir(drive):
match = re.search(r"^([a-zA-Z-]+)__?(\d+).(\d+).(\d+).xlsx$",f)
if match:
files.append(match.groups() + (f,))
樣品文件名:
filename_19.01.17.xlsx
filename__04.01.17.xlsx
AB_TEST_DATA-OUTER_13.02.17.xlsx
因此,提取應該是以下幾點:
filename, 19, 01, 17, filename_19.01.17.xlsx
也試過以下:
r"^(([a-zA-Z-]+)(__?)){1,3}(\d+).(\d+).(\d+).xlsx"
是否有可能有一個模式匹配所有文件?或者我應該將它們分成兩種模式?
可能是一個愚蠢的問題,但簡單的'「。* \。xlsx」'有什麼問題?那個目錄中還有其他的xlsx文件,你不想要? – Bahrom
@Bahrom是的,我不想匹配 – OAK