繁体   English   中英

如何在scala中的foreach函数中的正则表达式上进行模式匹配?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM