scala regex:提取文件扩展名

cod*_*ter 0 regex file-extension scala case match

val file_name="D:/folder1/folder2/filename.ext"    //filename
val reg_ex = """(.*?).(\\\\w*$)""".r  //regex pattern

 file_name match {
      case reg_ex(one , two) =>s"$two is extension"
      case _ => println(" file_reg_ex none")
    }
Run Code Online (Sandbox Code Playgroud)

我想使用scala regex从上面提取文件扩展名,即“ ext”,使用match&case。

我正在使用上面的正则表达式,这将导致不匹配的情况。

任何指向正则表达式教程的指针都会有所帮助。

jwv*_*wvh 6

一些小的调整。

val reg_ex = """.*\.(\w+)""".r

file_name match {
  case reg_ex(ext) =>s"$ext is extension"
  case _ => println("file_reg_ex none"); ""
}
Run Code Online (Sandbox Code Playgroud)

只需要一个捕获组。忽略最后一个点之前的所有内容\.(已转义,因此是一个点而不是“任何字符”),然后捕获其余部分。

默认值case _不应做更多println。它应返回与匹配项相同的类型。

  • +1以固定答案中的“案例_”。Scala regex是Java regex,但是http://www.scala-lang.org/api/current/scala/util/matching/Regex.html上有一些示例对于解析文件路径,您确实需要一个lib而不是regexes。有几个库。 (2认同)