首页 > 解决方案 > 如何通过正则表达式从Ruby中的字符串中提取年份

问题描述

我正在尝试从具有这种格式的字符串中提取年份:

dataset_name = 'ALTVALLEDAOSTA000020191001.json'

我试过:

dataset_name[/<\b(19|20)\d{2}\b>/, 1]
/\b(19|20)\d{2}\b/.match(dataset_name)

我仍在阅读文档,但到目前为止我无法达到我想要的结果。我真的不擅长正则表达式。

标签: regexruby

解决方案


由于您的数据集名称始终以 结尾yyyymmdd.json,因此您可以从后面数起最后 13-9 个字符的一部分:

irb(main):001:0> dataset_name = 'ALTVALLEDAOSTA000020191001.json'
irb(main):002:0> dataset_name[-13...-9]
=> "2019"

如果您想要更精确一点,也可以使用正则表达式:

irb(main):003:0> dataset_name =~ /(\d{4})\d{4}\.json$/
=> 18
irb(main):004:0> $1
=> "2019"

推荐阅读