我有一系列像这样的字符串:
val foo = Seq("bar scala baz", "bar java baz", "bar python baz")
我需要在bar
和baz
之间提取所有内容,以便我得到这样的内容:
val foobarbaz = Seq("scala", "java", "python")
如何在Scala中使用正则表达式执行此操作?
答案 0 :(得分:6)
不一定使用正则表达式,请考虑String
条带方法,例如
foo.map { _.stripPrefix("bar").stripSuffix("baz").trim }
res: Seq[String] = List(scala, java, python)
答案 1 :(得分:5)
试试这个
val regex = "^bar(.*)baz$".r
val foobarbaz = foo.collect { case regex(a) => a.trim }
答案 2 :(得分:0)
从Scala 2.13
开始,可以按unapplying a string interpolator模式匹配String
s:
// val foo = Seq("bar scala baz", "bar java baz", "bar python baz")
foo.map { case s"bar $lang baz" => lang }
// List("scala", "java", "python")