環境
- Scala 2.12.4
やりたいこと
scala.util.matching.Regexで正規表現のマッチを行いたいです。
問題
日付を年、月、日に分解するため、以下のソースを実行したところ、scala.MatchError
が発生しました。
val date = """\d{4}-\d{2}-\d{2}""".r
val date(year, month, day) = "2018-04-01"
//scala.MatchError: 2018-04-01 (of class java.lang.String)
原因・解決方法
正規表現のキャプチャが行われていないためです。
正規表現の数字部分に括弧を付けると、期待通り動きます。
val date = """(\d{4})-(\d{2})-(\d{2})""".r
val date(year, month, day) = "2018-04-01"
//year: String = 2018
//month: String = 04
//day: String = 01
感想
正規表現の問題で、Scalaは関係ないですね。
少しハマったので、記事として残しました。