Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/scala/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ember.js/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Scala直接在正则表达式上匹配大小写_Scala - Fatal编程技术网

Scala直接在正则表达式上匹配大小写

Scala直接在正则表达式上匹配大小写,scala,Scala,我正在尝试做如下事情: list.foreach {x => x match { case """TEST: .*""" => println( "TEST" ) case """OXF.*""" => println("XXX") case _ => println("NO MATCHING") } } 其思想是像groovy switch case regex match一样

我正在尝试做如下事情:

list.foreach {x => 
     x match {
       case """TEST: .*""" => println( "TEST" )
       case """OXF.*"""   => println("XXX")
       case _             => println("NO MATCHING")
     }
}

其思想是像groovy switch case regex match一样使用它。但我似乎无法编译。在scala中,正确的方法是什么?

您可以在预编译的正则表达式上进行匹配(如下面的第一种情况),或者在 条款请注意,您通常不希望在每个
案例
求值中重新编译相同的正则表达式,而是将其放在对象上

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")
     }
   }

查看更多信息和一些背景。

Scala 2.13
开始,可以通过以下方式直接对
字符串进行模式匹配:


我希望scala为处理这个问题添加更多的语法糖,我不喜欢额外的代码来匹配更简单的正则表达式。在花了相当长的时间来了解如何做到这一点后,我简直不敢相信它在Scala中是不可行的,因此出现了StackOverflow帖子!使用
val testRegex=“”TEST:(.*)”.r
case testRegex(m)=>println(“TEST”+m)
捕获匹配
// val examples = List("Not a match", "TEST: yes", "OXFORD")
examples.map {
  case s"TEST: $x" => x
  case s"OXF$x"    => x
  case _           => ""
}
// List[String] = List("", "yes", "ORD")