在 Scala 中使用带过滤器的正则表达式

Using regex with filter in Scala

下面 regex 的使用与值不匹配:charIntIntIntIntIntInt

val regex = "([a-zA-Z]\d\d\d\d\d\d)"
       //> regex  : String = ([a-zA-Z]\d\d\d\d\d\d)
val f = List("b111111").filter(fi => fi startsWith regex)
       //> f  : List[String] = List()

f 是一个空列表,它应该包含 b111111

当我在 https://www.regex101.com/ 上使用此正则表达式时,它会正确匹配字符串。

我的过滤方式有问题吗?

需要使用matches而不是startsWith

这在String.class

中有详细说明

这个有效:

val regex = "([a-zA-Z]\d\d\d\d\d\d)" 
val f = List("b111111").filter(fi => fi matches regex)

如何使用 Scala 语言的正则表达式功能,例如:

val regex = """^([a-zA-Z]\d{6})""".r // enables you to drop escaping \'s
val f = List("b111111").filter { s => regex.findFirstIn(s).isDefined }

有关详细信息,请参阅 http://www.scala-lang.org/api/current/index.html#scala.util.matching.Regex