Scala模式匹配正则表达式

时间:2019-09-10 07:01:31

标签: regex scala

在我的scala程序中,我想使用模式匹配来测试输入路径中是否存在有效的.csv文件。 路径=“ \ DAP \ TestData \ test01.csv” val regex =“”“。csv $”“”。r.unnchored

我尝试使用以前的正则表达式来匹配字符串,但是可以,但是当它匹配模式时,它就无法工作。

path ="\DAP\TestData\test01.csv"
val regex="""\.csv$""".r.unanchored    
path match {
  case regex(type) =>println(s"$type matched")
  case _ =>println("something else happeded")
}

我需要成功打印“ .csv匹配”之类的信息。 有人可以帮我解决这个问题吗?这个问题我真的很困惑。 谢谢

2 个答案:

答案 0 :(得分:1)

不清楚要捕获和报告path的哪一部分。但是无论如何,您可能都希望在正则表达式模式中使用捕获组。

val path = raw"\DAP\TestData\test01.csv"
val re = """(.*\.csv)$""".r.unanchored
path match {
  case re(typ) => println(s"$typ matched")   //"\DAP\TestData\test01.csv matched"
  case _       => println("something else happened")
}

您还可以使用捕获组来捕获许多不同目标模式中的任何一种。

val re = ".*\\.((?i:json|xml|csv))$".r
raw"\root\test31.XML" match {
  case re(ext) => println(s"$ext matched")   //"XML matched"
  case _       => println("something else happeded")
}

答案 1 :(得分:0)

您可以这样尝试:

 val regex = """(\.csv)$""".r.unanchored

    path match {
      case regex(fileType) => println(s"$fileType matched")
      case _ => println("something else happeded")
    }
相关问题