首页 > 解决方案 > 如何将所有文件名与 .csv 和 .xlsx 匹配,最少一个字符?

问题描述

假设我有以下正则表达式regex_ = r'^((?!~\$).)+\.(xls(x?)|csv)$'和代码片段:

all_files = [f_path + filename for f_path, _, filenames in os.walk(curr_path) for filename in filenames if re.search(regex_, filename)]

curr_path当前工作目录在哪里- curr_path = os.getcwd().

我是否正确解释上面的代码检索属于文件的所有文件名.csv.xlsx扩展名curr_path

标签: pythonregexpython-3.x

解决方案


我的猜测是,您可能想到的表达式可能是:

^(?:(?!~\$).)+\.(?:xlsx?|csv)$

这只会使任何此类字符串失败:

~$.csv
~$.xls
~$.xlsx

并且在所需的扩展之前还需要至少一个字符。

演示


该表达式在regex101.com的右上角面板上进行了说明,如果您希望探索/简化/修改它,并且在此链接中,您可以查看它如何与一些示例输入匹配,如果您愿意的话。


正则表达式电路

jex.im可视化正则表达式:

在此处输入图像描述


推荐阅读