regex - 如何通过正则表达式从Ruby中的字符串中提取年份
问题描述
我正在尝试从具有这种格式的字符串中提取年份:
dataset_name = 'ALTVALLEDAOSTA000020191001.json'
我试过:
dataset_name[/<\b(19|20)\d{2}\b>/, 1]
/\b(19|20)\d{2}\b/.match(dataset_name)
我仍在阅读文档,但到目前为止我无法达到我想要的结果。我真的不擅长正则表达式。
解决方案
由于您的数据集名称始终以 结尾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"
推荐阅读
- java - Java:如何解析大量 .csv 文件?
- python - 切换到下一个级别在 pygame 中不起作用
- java - JMH 多个基准测试独立运行的不同结果
- ios - 在 PDFKit 中为文本注释配置键盘(iOS14)
- python - 使用子进程将字符串从 Python 传递到 Bash 脚本
- python - 使用本质矩阵获取对应点
- google-chrome - 是否有一个 API 可以读取不需要编写 chrome 插件的 chrome 书签?
- r - R if (nrow(emobj$Mu) != nclass || ncol(emobj$Mu) != p || nrow(emobj$LTSigma) != 中的错误:需要 TRUE/FALSE 的地方缺少值
- azure-devops - 从 Azure 测试计划运行自动化测试
- azure-devops - Azure DevOps:当多个项目部署到同一个虚拟机时如何管理 VM 代理