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

使用Python正则表达式区分含update与不含update的指定格式字符串

我来帮你针对这两种文件名格式,写出精准的正则表达式,先拆解下你的文件名固定结构:

  • 不含update的格式:Beta_Gambus_teta_{可变字符串}_{日期}.ctr
  • 含update的格式:Beta_Gambus_teta_{可变字符串}_update_{日期}.ctr

1. 匹配不含update的字符串

使用这个正则表达式:

^Beta_Gambus_teta_([^_]+)_(\d{4}\.\d{2}\.\d{4})\.ctr$

各部分作用说明:

  • ^Beta_Gambus_teta_:锁定开头的固定前缀,避免匹配其他无关文件名
  • ([^_]+):精准捕获可变字符串,[^_]+表示匹配任意非下划线的字符(刚好卡在可变字符串后的下划线前,不会多匹配)
  • _(\d{4}\.\d{2}\.\d{4}):捕获日期部分,\d{4}\.\d{2}\.\d{4}完美匹配YYYY.MM.DDDD的日期格式
  • \.ctr$:锁定结尾的.ctr后缀,确保只匹配目标文件类型

测试示例:匹配Beta_Gambus_teta_wqtr_2017.02.1276.ctr时,捕获组1为wqtr,捕获组2为2017.02.1276

2. 匹配含update的字符串

使用这个正则表达式:

^Beta_Gambus_teta_([^_]+)_update_(\d{4}\.\d{2}\.\d{4})\.ctr$

各部分作用说明:

  • 前半段^Beta_Gambus_teta_([^_]+)和上面一致,负责捕获可变字符串
  • _update_:精准匹配中间的update标识,确保只筛选带该关键词的文件
  • 后半段的日期和后缀规则和不含update的版本完全一致

测试示例:匹配Beta_Gambus_teta_wqtr_update_2017.02.1277.ctr时,捕获组1为wqtr,捕获组2为2017.02.1277

为什么你原来的正则不行?

你之前用的^.+_(.+)\.ctr$里,.+是贪婪匹配模式,会从文件名开头一直匹配到最后一个下划线的位置,导致把update和日期部分也包含进捕获内容里,范围太宽泛。而我们用[^_]+限制了可变字符串的匹配边界,就解决了这个问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.14 06:30:17