Scala正则表达式匹配失败,scala.MatchError用于\ w和\ d(字或数字)匹配

时间:2016-05-28 18:51:48

标签: regex scala

我正在尝试一些基本的正则表达式模式匹配。虽然我的语法似乎是正确的,但当我使用\w\d进行字数和数字匹配时,它会失败。

import scala.util.matching.Regex

object ex {
  def main(args:Array[String]):Unit = {
    val pattern =  new Regex("(\\w)\\s(\\d)");
    val pattern(words,num) = "asas1 11"
    print(words+" "+num)
  }
}

这是我得到的错误:

Exception in thread "main" scala.MatchError: asas1 11 (of class java.lang.String)
    at com.cccu.semantic.ex$.main(ex.scala:8)
    at com.cccu.semantic.ex.main(ex.scala)

注意:我在Windows机器上使用Eclipse SDK的Scala IDE版本,Build ID 4.4.1和Scala 2.11.8。

1 个答案:

答案 0 :(得分:2)

\w\d将匹配单个字符,您需要添加+修饰符。它抛出一个异常,因为它无法匹配正则表达式的输入。

scala> val pattern =  new Regex("(\\w+)\\s(\\d+)");    val pattern(words,num) = "asas1 11"
pattern: scala.util.matching.Regex = (\w+)\s(\d+)
words: String = asas1
num: String = 11