在Scala中提取两个字符串之间的字符串

时间:2014-08-26 08:39:24

标签: regex scala

我有一系列像这样的字符串:

val foo = Seq("bar scala baz", "bar java baz", "bar python baz")

我需要在barbaz之间提取所有内容,以便我得到这样的内容:

val foobarbaz = Seq("scala", "java", "python")

如何在Scala中使用正则表达式执行此操作?

3 个答案:

答案 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")