我想尝试做以下事情:
list.foreach {x => x match { case """TEST: .*""" => println( "TEST" ) case """OXF.*""" => println("XXX") case _ => println("NO MATCHING") } }
这个想法是使用它像groovy switch case正则表达式匹配.但我似乎无法编译.什么是在scala中正确的方法?
您可以匹配预编译的正则表达式(如下面的第一种情况),也可以添加if
条款.请注意,您通常不希望在每个案例评估中重新编译相同的正则表达式,而是将其放在对象上.
条款.请注意,您通常不希望在每个案例评估中重新编译相同的正则表达式,而是将其放在对象上.
val list = List("Not a match","TEST: yes","OXFORD") val testRegex = """TEST: .*""".r list.foreach { x => x match { case testRegex() => println( "TEST" ) case s if s.matches("""OXF.*""") => println("XXX") case _ => println("NO MATCHING") } }