You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用正则表达式提取指定媒体扩展名的文件列表?

解决正则表达式提取媒体文件的问题

嘿,我来帮你搞定这个正则提取媒体文件的问题!你原来的正则确实有几个小问题,咱们一步步修正它:

原来正则的问题点

  • 用了^.*会匹配整行从开头到扩展名的所有内容,而不是单独的目标文件名
  • 点号.没有转义,在正则语法里.代表任意字符,所以.png其实会匹配“任意字符+png”,而不是真正的.png扩展名
  • 正则表达式未完成,缺少闭合的括号和结尾匹配逻辑

正确的正则表达式写法

我们需要精准匹配以指定媒体扩展名结尾、由非空白字符组成的完整文件名,对应的正则可以写成:

r'\b\S+\.(?:png|jpg|jpeg|mp4|avi|flv)\b'

这里的关键细节:

  • \b:单词边界,确保我们匹配的是完整的文件名,不会从中间截断
  • \S+:匹配一个或多个非空白字符,覆盖文件名(包括可能的路径前缀)
  • \.:转义后的点号,匹配真正的扩展名分隔符
  • (?:png|jpg|jpeg|mp4|avi|flv):非捕获分组,列出所有要匹配的媒体扩展名,避免findall只返回扩展名部分
  • 最后的\b:确保扩展名后面没有多余的无效字符

完整可运行代码

import re

st = '''/mnt/data/Content: ManifestFile.txt kompass-tags_e2d5dac5ba548a1206b5d40f58e448e4 tmp_content default_55a655f340908dce55d10a191b6a0140 price-tags_b3c756dda783ad0691163a900fb5fe15
/mnt/data/Content/default_55a655f340908dce55d10a191b6a0140: LayoutFile_34450b33c8b44af409abb057ddedfdfe.txt blank_decommissioned.jpeg tmp_content ManifestFile.txt blank_unregistered.png
/mnt/data/Content/default_55a655f340908dce55d10a191b6a0140/tmp_content:
/mnt/data/Content/kompass-tags_e2d5dac5ba548a1206b5d40f58e448e4: 0001111084948-kompass-LARGE.avi 0076738703404-kompass-LARGE.png LayoutFile_7c1b3793e49204982e0e41923303c17b.txt 0001111087321-kompass-LARGE.jpg 0076738703419-kompass-LARGE.mp4 ManifestFile.txt 0001111087325-kompass-LARGE.png 0076738703420-kompass-LARGE.png tmp_content
/mnt/data/Content/kompass-tags_e2d5dac5ba548a1206b5d40f58e448e4/tmp_content:
/mnt/data/Content/price-tags_b3c756dda783ad0691163a900fb5fe15: 0001111084948-consumer-large.png 0076738703404-consumer-large.png LayoutFile_a694b1e05d08705aaf4dd589ac61d493.txt 0001111087321-consumer-large.png 0076738703419-consumer-large.avi ManifestFile.txt 0001111087325-consumer-large.mp4 0076738703420-consumer-large.png tmp_content
/mnt/data/Content/price-tags_b3c756dda783ad0691163a900fb5fe15/tmp_content:
/mnt/data/Content/tmp_content: '''

# 修正后的正则表达式
pattern = r'\b\S+\.(?:png|jpg|jpeg|mp4|avi|flv)\b'
media_files = re.findall(pattern, st)

# 打印提取结果
print("提取到的媒体文件列表:")
for file in media_files:
    print(f"- {file}")

最终提取到的媒体文件列表

  • blank_decommissioned.jpeg
  • blank_unregistered.png
  • 0001111084948-kompass-LARGE.avi
  • 0076738703404-kompass-LARGE.png
  • 0001111087321-kompass-LARGE.jpg
  • 0076738703419-kompass-LARGE.mp4
  • 0001111087325-kompass-LARGE.png
  • 0076738703420-kompass-LARGE.png
  • 0001111084948-consumer-large.png
  • 0076738703404-consumer-large.png
  • 0001111087321-consumer-large.png
  • 0076738703419-consumer-large.avi
  • 0001111087325-consumer-large.mp4
  • 0076738703420-consumer-large.png

内容的提问来源于stack exchange,提问作者Sachhya

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.21 03:57:17