在我的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匹配”之类的信息。 有人可以帮我解决这个问题吗?这个问题我真的很困惑。 谢谢
答案 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")
}