無需這裏正則表達式:
def matchFields(param: String): Set[String] = fields.filter(_.contains(param))
scala> matchFields("abc")
res0: Set[String] = Set(uio abcd, abc, abc per, yrabc, abcd)
contains
檢查一個字符串是另一個的子串,filter
過濾掉的元素,這不符合給定的斷言。
如果你真正想要的正則表達式:
import scala.util.matching._
scala> def matchFields(R: Regex): Set[String] = fields.collect{case [email protected]() => str}
matchFields: (R: scala.util.matching.Regex)Set[String]
scala> matchFields(".*abc.*".r)
res5: Set[String] = Set(uio abcd, abc, abc per, yrabc, abcd)
或者:
scala> def matchFields(R: Regex): Set[String] = fields.flatMap(R.findFirstIn)
matchFields: (R: scala.util.matching.Regex)Set[String]
scala> matchFields(".*abc.*".r)
res7: Set[String] = Set(uio abcd, abc, abc per, yrabc, abcd)
.*
指0或以上的象徵。 .r
從String
創建Regex