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

Preg_match忽略捕获组分隔符 正则匹配符合规范的会议议程文件名问题

解决方案

核心问题是你没有将可选的bbb议程项编号分组整体标记为可选,且没有严格限定该分组前后的下划线绑定关系。

修正后的正则表达式

/^(\d{4}(?:_?\d{2}){2})_(\w{2,3})(?:_([a-z0-9]{1,3}))?_([a-zA-Z0-9]+)\.pdf$/i

规则说明

  • 日期部分(\d{4}(?:_?\d{2}){2}):兼容yyyymmdd和yyyy_mm_dd两种格式,逻辑和原有规则一致,仅做了写法简化
  • 会议类型编码(\w{2,3}):保留原有2-3位字符的规则
  • 可选议程项编号(?:_([a-z0-9]{1,3}))?:
    1. 外层用(?: ... )?标记整个分组为可选,不存在时完全跳过匹配
    2. 必须和前面的下划线绑定,只有存在下划线时才会尝试匹配1-3位的议程项编号,不会误吞后面描述字段的内容
    3. 内层的([a-z0-9]{1,3})是捕获组,有议程项编号时会正常捕获,没有时该捕获组返回空值
  • 文件描述([a-zA-Z0-9]+):严格限定仅支持字母数字,符合命名规范要求
  • 末尾加$锚定字符串结尾,避免后缀名后有多余字符也被误匹配

匹配效果验证

对给出的所有示例文件名均可正确分组:

  • 无议程项编号的文件(如20200225_RM_agenda.pdf、2021_02_25_EV_Notice.pdf):第三捕获组(议程项编号)返回空,第四捕获组正确返回完整描述内容
  • 有议程项编号的文件:第三捕获组正常返回编号,第四捕获组正确返回描述内容

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.16 00:36:06