【发布时间】:2019-03-16 18:22:38
【问题描述】:
我写了以下正则表达式:
val reg = ".+([A-Z_].+).(\\d{4})_(\\d{2})_(\\d{2})_(\\d{2})\\.orc".r
应该解析以下字符串: “S3//bucket//TS11_YREDED.2018_09_28_02.orc” 解析方法是:
val dataExtraction: String => Map[String, String] = {
string: String => {
string match {
case reg(filename, year, month, day) =>
Map(FILE_NAME-> filename, YEAR -> year, MONTH -> month, DAY -> day)
case _ => Map(FILE_NAME-> filename,YEAR -> "", MONTH -> "", DAY -> "")
}
}
}
val YEAR = "YEAR"
val MONTH = "MONTH"
val DAY = "DAY"
val FILE_NAME = "FILE_NAME"
但它不能正常工作 它应该省略存储桶名称并解析文件名和日期
所以预期的输出应该是: Map(FILE_NAME-> TS11_YREDED, YEAR -> , MONTH -> 09, DAY -> 28) 知道如何解决它吗?
【问题讨论】:
标签: regex scala pattern-matching