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

如何优化正则提取电影记录中ID与可选年份/类型间的标题内容

电影列表解析正则优化方案

优化后正则

^(\d+),\s*"?([^"]*?)"?\s*(?:\((\d{4})\))?\s*,(.*)$

默认4个捕获组依次对应:电影ID、电影标题、上映年份(无年份则为空)、电影类型,你可根据需求调整分组规则。

正则逻辑说明

  • ^(\d+):匹配行首的数字ID,作为第一个捕获组
  • ,\s*"?:匹配ID后的分隔逗号,跳过后续可能存在的空格、包裹标题的双引号前缀
  • ([^"]*?):非贪婪匹配标题内容,遇到双引号就终止匹配,既适配双引号包裹的标题行,也不会误把标题内部的小括号内容识别成年份
  • "?\s*:匹配包裹标题的双引号后缀,以及后续可能存在的空格
  • (?:\((\d{4})\))?:可选匹配年份段,只有括号内是4位数字的内容才会被识别为年份,年份值为第三个捕获组,外层加非捕获标记避免产生多余分组
  • \s*,:匹配年份后的空格、分隔标题与类型字段的逗号
  • (.*)$:匹配行尾所有类型字段内容,作为第四个捕获组

测试用例匹配验证

针对你提供的测试数据,匹配结果完全符合预期:

ID标题年份类型
1Ace Ventura: When Nature Calls1995Comedy
20Money Train1995Action
22Copycat空Crime
24Powder1995Drama
25Leaving (5) Las Vegas空Drama

补充说明

如果你的数据中存在标题本身包含4位数字括号(非年份)的场景,可以将正则调整为优先匹配靠近类型分隔逗号的4位括号,修改后正则如下:

^(\d+),\s*"?(.*?)"?\s*(?:\((\d{4})\))?\s*,(.*)$

如果CSV字段存在更复杂的转义场景,更建议使用专用的CSV解析库处理,稳定性优于正则匹配。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 19:45:09