Scala映射[Regex,String]第一个错误

Scala映射[Regex,String]第一个错误,regex,scala,Regex,Scala,我正在尝试根据正则表达式匹配自动将字符串转换为日期。我的代码如下: package be.folks.date import java.util.Date import scala.util.matching.Regex import org.joda.time.format.DateTimeFormat class StringToDate(underlying:String) { val regmap : Map[Regex, String] = Map( ("""\d\d

我正在尝试根据正则表达式匹配自动将字符串转换为日期。我的代码如下:

package be.folks.date

import java.util.Date
import scala.util.matching.Regex
import org.joda.time.format.DateTimeFormat

class StringToDate(underlying:String) {

  val regmap : Map[Regex, String] = Map(
    ("""\d\d-\d\d-\d\d\d\d""".r, "dd-MM-yyyy"),
    ("""\d\d-\w\w\w-\d\d\d\d""".r, "dd-MMM-yyyy")
  )

  def toDate() : Date = { 
    DateTimeFormat.forPattern((regmap collectFirst { case (_(underlying) , v) => v  } get)).parseDateTime(underlying).toDate()
  }

}

object StringToDate {
  implicit def +(s:String) = new StringToDate(s)
}
但是,我得到了一个““-”)的错误,预期结果是(


如何更正此问题?

我不确定是否理解您应用正则表达式的语法。也许,在
toDate
中,您需要:

regmap collectFirst {
    case (pattern , v)  if((pattern findFirstIn underlying).nonEmpty) => v}

我也不会使用
get
从选项中提取字符串,因为如果找不到匹配的正则表达式,它会引发异常。我不知道您希望如何在代码中管理这种情况,因此我无法给您提供建议。

我将把它保留为get的异常:)