【问题标题】:Regex pattern for filename with date带有日期的文件名的正则表达式模式
【发布时间】:2021-04-01 22:05:02
【问题描述】:

我在服务器中有名为“data_2021_03_v1.0.zip”的文件。 当我尝试使用“data.*(ZIP|zip)”正则表达式时,它正在加载以数据字符串开头的所有文件。 我想要文件名中只包含数据(完全匹配-没有额外的单词)的文件。

例如: 它正在加载名称为“data_abc_efg_19-01-v2.0.zip”的文件以及原始文件。 有人可以帮助构建上述文件格式的正则表达式模式

【问题讨论】:

  • 不明白你的问题I want files containing only data(exactmatch-no extra words along with it) in filename.这是什么意思?这是否意味着你想要 data.zip

标签: python regex


【解决方案1】:

您可以使模式更具体

\bdata_\d{4}_\d{2}_v\d+(?:\.\d+)*\.(?:ZIP|zip)\b
  • \bdata_一个词边界防止部分匹配,然后匹配data_
  • \d{4}_\d{2}_v 匹配 4 位数字 _ 2 位数字 _v
  • \d+(?:\.\d+)* 匹配 1+ 位数字,并可选择重复 . 和 1+ 位数字
  • \.(?:ZIP|zip) 匹配 .zip.ZIP
  • \b一个字边界

Regex demo

你可以让模式不区分大小写,但你也可以匹配 DATA,例如

(?i)\bdata_\d{4}_\d{2}_v\d+(?:\.\d+)*\.zip\b

【讨论】:

    【解决方案2】:

    查看示例,我假设您只需要:data__

    这是一个正则表达式:

    data(_?\d)*(_v\d)?\.?\d\.(zip|ZIP)
    

    【讨论】:

      猜你喜欢
      • 2016-06-26
      • 1970-01-01
      • 1970-01-01
      • 2022-10-22
      • 1970-01-01
      • 1970-01-01
      • 2017-09-14
      • 2020-08-11
      • 1970-01-01
      相关资源
      最近更新 更多