我正在尝试一些基本的正则表达式模式匹配。虽然我的语法似乎是正确的,但当我使用\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。
答案 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