加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

regex – 日期范围的正则表达式

发布时间:2020-12-14 06:24:13 所属栏目:百科 来源:网络整理
导读:如果我有这样的目录结构 yyyy/dd/mm/files 有没有办法使用正则表达式在给定时间范围内grep所有文件中的字符串?例如,我有一个时间框架:2010/12/25 – 2011/01/01,我需要grep对应于日期从12月25日到1月1日的目录中的所有文件 如果我以编程方式执行此操作,是
如果我有这样的目录结构
yyyy/dd/mm/<files>

有没有办法使用正则表达式在给定时间范围内grep所有文件中的字符串?例如,我有一个时间框架:2010/12/25 – 2011/01/01,我需要grep对应于日期从12月25日到1月1日的目录中的所有文件

如果我以编程方式执行此操作,是否最好在每个yyyy / dd / mm目录中迭代日期范围和grep文件,而不是使用正则表达式执行此操作?或者它不会有所作为?

在你的情况下,它很简单:
b(?:2010/12/(?:3[01]|2[5-9])|2011/01/01)b

将匹配包含您指定范围内的日期的字符串.但一般来说,正则表达式不适合匹配日期范围.它总是有可能,但很少是一个好的.

例如,对于2003/04 / 25-2011 / 04/04的范围,你得到

b(?:
2003/04/(?:30|2[5-9])|
2003/(?:(?:0[69]|11)/(?:30|[12][0-9]|0[1-9])|(?:0[578]|1[02])/(?:3[01]|[12][0-9]|0[1-9]))|
2011/04/0[1-4]|2011/(?:02/(?:[12][0-9]|0[1-9])|0[13]/(?:3[01]|[12][0-9]|0[1-9]))|
(?:2010|200[4-9])/(?:02/(?:[12][0-9]|0[1-9])|(?:0[469]|11)/(?:30|[12][0-9]|0[1-9])|(?:0[13578]|1[02])/(?:3[01]|[12][0-9]|0[1-9]))
)b

如果我不得不做这样的事情(并且不能在文件属性中使用创建日期),我会使用RegexMagic(创建日期范围正则表达式)和PowerGREP(进行grepping)如果它是一次性的工作,但这些仅适用于Windows.如果我不得不经常这样做,我会编写一个小的Python脚本,遍历我的目录树,解析每个目录的日期,检查它是否在范围内,然后查看该目录中的文件.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读