[英]How to do pattern matching on regex in a foreach function in scala?
我不明白为什么这行不通(我这里有两个“不匹配”):
val a = "aaa".r
val b = "bbb".r
List("aaa", "bbb").foreach {
case a(t) => println(t)
case b(t) => println(t)
case _ => println("no match")
}
括号中的变量应该是捕获组。 将您的正则表达式更改为val a = "(aaa)".r; val b = "(bbb)".r
val a = "(aaa)".r; val b = "(bbb)".r
,这将使其按您的意愿执行。 或者,更改匹配模式:
List("aaa", "bbb").foreach {
case a() => println("aaa")
case b() => println("bbb")
case _ => println("no match")
}
模式不包含捕获组,您需要在要捕获的模式周围加上括号,以使模式匹配起作用:
val a = "(aaa)".r
// a: scala.util.matching.Regex = (aaa)
val b = "(bbb)".r
// b: scala.util.matching.Regex = (bbb)
List("aaa", "bbb").foreach {
case b(t) => println(t)
case a(t) => println(t)
case _ => println("no match")
}
//aaa
//bbb
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.