如何用Python正则表达式提取符合特定模式的文件名
解决文件名匹配的正则表达式OR条件问题
要实现你的文件名筛选需求,正则里的OR条件用|符号即可。我们可以把两种匹配规则(单个模式、组合模式)用|连接,形成完整的匹配表达式。
正则规则拆解
- 单个模式:匹配文件名中包含
_f[1-99]、_t[1-99]、_v[1-99]的部分,对应的正则片段是_[ftv]([1-9]\d?)——其中[1-9]\d?表示1-9开头,后续可选一位数字(覆盖1-99的范围)。 - 组合模式:匹配文件名中包含
_f[1-9]_v[1-9]_t[1-9]的连续片段,对应的正则片段是_f[1-9]_v[1-9]_t[1-9]。
将两部分用|拼接,就得到完整的匹配正则:r'(_[ftv]([1-9]\d?))|(_f[1-9]_v[1-9]_t[1-9])'
完整Python代码示例
import re # 定义匹配规则的正则表达式 match_pattern = r'(_[ftv]([1-9]\d?))|(_f[1-9]_v[1-9]_t[1-9])' # 你的示例文件名列表 file_list = [ "phone_football_androind_1_v1_te_t1_fe", "phone_football_ios_v1_t1", "foot_cricket2345678_f12_t4", "tfd_fr_ve_t1_v1_f3_201234_yyymmmdd", "def_000_t4_f1", "file_job_1234567_f1_t55", "ROKLOP_f33_t44", "agdcv_t45", "gop_gop_f1_t14_v14", "file_op_v1_t1", "fop_f1_v1_1223" ] # 筛选符合规则的文件 qualified_files = [fname for fname in file_list if re.search(match_pattern, fname)] # 输出结果 print("符合规则的文件名:") for f in qualified_files: print(f)
代码说明
re.search()会在文件名的任意位置查找匹配,只要存在符合任一规则的片段,就判定该文件合格。- 运行这段代码后,所有示例文件名都会被筛选出来,因为它们都至少包含一个单个模式的匹配项。
内容的提问来源于stack exchange,提问作者BigD
相关产品推荐
相关产品推荐

