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

正则表达式提取不含日期的文件名及扩展名遇异常求解决方案

解决方案

原代码问题分析

你用的正则\D+\S\D+逻辑太模糊,它只是匹配「至少一个非数字+任意非空白字符+至少一个非数字」,完全没法区分日期和文件名的边界,所以会出现丢扩展名、匹配到多余下划线的问题。

改进方案

首先明确文件名里日期的常见格式(比如20240520、2024-05-20、2024.05.20),通常日期要么是前缀(如20240520_report.pdf)要么是后缀(如report_20240520.pdf)。下面提供两种可靠的实现方式:

方式1:用正则替换移除日期部分

这种方式更简洁,直接把文件名里的日期相关片段删掉,剩下的就是纯文件名+扩展名:

public override void Input0_ProcessInputRow(Input0Buffer Row)
{
    string fullFileName = Row.fullfilename;
    // 匹配常见的日期前缀/后缀格式,包含分隔符
    string datePattern = @"(?:^\d{8}_|^\d{4}[-.]\d{2}[-.]\d{2}_|_(\d{8}|\d{4}[-.]\d{2}[-.]\d{2}))(?=\.\w+$|$)";
    // 移除匹配到的日期片段
    string cleanFileName = Regex.Replace(fullFileName, datePattern, string.Empty);
    
    // 处理极端情况(比如原文件名只有日期,不过这种情况很少见)
    Row.filename = string.IsNullOrWhiteSpace(cleanFileName) ? " " : cleanFileName;
}

正则各部分说明:

  • ^\d{8}_:匹配开头的8位数字日期+下划线(如20240520_)
  • ^\d{4}[-.]\d{2}[-.]\d{2}_:匹配开头的带分隔符日期+下划线(如2024-05-20_、2024.05.20_)
  • _(\d{8}|\d{4}[-.]\d{2}[-.]\d{2}):匹配下划线+日期后缀(如_20240520、_2024-05-20)
  • (?=\.\w+$|$):确保日期后面是扩展名或文件名结尾,避免误删文件名里的正常数字(比如file123.pdf里的123)

方式2:用捕获组直接提取目标内容

如果需要更明确的逻辑分支,可以用捕获组分别匹配不同结构的文件名:

public override void Input0_ProcessInputRow(Input0Buffer Row)
{
    string fullFileName = Row.fullfilename;
    // 匹配三种情况:日期在前、日期在后、无日期
    string pattern = @"^(?:\d{8}|\d{4}[-.]\d{2}[-.]\d{2})_(.*)$|^(.*)_(?:\d{8}|\d{4}[-.]\d{2}[-.]\d{2})(\.\w+)$|^(.*\.\w+)$";
    Match match = Regex.Match(fullFileName, pattern);
    
    if (match.Success)
    {
        // 依次检查各个捕获组的内容
        string result = match.Groups[1].Value;
        if (string.IsNullOrEmpty(result))
            result = match.Groups[2].Value + match.Groups[3].Value;
        if (string.IsNullOrEmpty(result))
            result = match.Groups[4].Value;
        
        Row.filename = string.IsNullOrWhiteSpace(result) ? " " : result;
    }
    else
    {
        Row.filename = " ";
    }
}

注意事项

如果你的日期格式和上述示例不同(比如是6位的MMDDYY),只需要调整正则里的日期匹配部分即可,比如把\d{8}改成\d{6}。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.25 13:54:22