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

如何从下划线分隔的字符串中提取末尾带下划线的目标文件名

文件名提取解决方案

核心匹配规则

输入字符串符合以下结构:可选多段下划线分隔的前缀 + 目标文件名 + _. + 文件后缀,要求提取目标文件名加后缀作为结果,参考示例:

  • Abc_12_test_.pdf → 输出 test.pdf
  • bc_122_testfile_.pdf → 输出 testfile.pdf
  • test_.xlsx → 输出 test.xlsx

实现代码

原有代码存在逻辑缺陷:先按下划线分割取最后一段会直接丢失目标文件名部分,正则未锚定末尾容易误匹配,也没有处理匹配失败的异常场景。推荐使用如下正则方案直接匹配目标部分:

import re

def extract_filename(raw_str):
    # 正则锚定字符串末尾,匹配「目标名_.后缀」格式
    # 如需支持多后缀(如.tar.gz),可将正则改为 r'([^_]+)_\.(.+)$'
    match_res = re.search(r'([^_]+)_\.([a-zA-Z0-9]+)$', raw_str)
    if match_res:
        return f"{match_res.group(1)}.{match_res.group(2)}"
    # 不符合匹配规则时可按业务需求调整返回逻辑,此处默认返回原字符串
    return raw_str

调用示例

print(extract_filename("Abc_12_test_.pdf")) # 输出 test.pdf
print(extract_filename("bc_122_testfile_.pdf")) # 输出 testfile.pdf
print(extract_filename("test_.xlsx")) # 输出 test.xlsx
print(extract_filename("proj_module_v2_report_.docx")) # 输出 report.docx

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 00:45:05