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

如何从字符串中获取两个数字间的内容?以电影文件名提取年份为例

从电影文件名提取制作年份的C#解决方案

需求是从电影文件名中提取制作年份,例如:

  • 输入:Kingdom.of.Heaven.2005.720p.Dubbed.Film2media
  • 输出:2005

当前使用的正则分割代码会拆分所有数字,无法精准提取年份:

string[] result = Regex.Split(str, @"(\d+:)");

实用解决方案

电影年份一般是1900-2099区间的4位数字,可通过精准匹配实现提取:

方案1:匹配区间内的独立4位数字

利用正则断言确保目标数字前后无其他数字,避免和分辨率(如720p)、编号混淆:

using System.Text.RegularExpressions;

string fileName = "Kingdom.of.Heaven.2005.720p.Dubbed.Film2media";
Match yearMatch = Regex.Match(fileName, @"(?<!\d)(19\d{2}|20\d{2})(?!\d)");

if (yearMatch.Success)
{
    string extractedYear = yearMatch.Value; // 结果为"2005"
}

正则各部分说明:

  • (?<!\d):负向零宽断言,保证数字前无其他数字
  • 19\d{2}|20\d{2}:匹配1900-1999或2000-2099的4位数字
  • (?!\d):负向零宽断言,保证数字后无其他数字

方案2:匹配被分隔符包裹的年份

如果文件名存在其他独立4位数字,可通过匹配年份前后的分隔符(如.)进一步精准定位:

Match yearMatch = Regex.Match(fileName, @"\.(19\d{2}|20\d{2})\."));

if (yearMatch.Success)
{
    string extractedYear = yearMatch.Groups[1].Value; // 提取分组内的年份
}

此正则仅匹配被.包裹的4位年份数字,排除其他位置的干扰数字。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 17:15:34