我正在努力使我的 Scala 代码更加地道一些。现在它看起来就像 Java 代码。
我正在尝试在 Scala 中做一个简单的 bool 正则表达式匹配函数,因为我似乎无法在标准库中找到它(?)
我不认为 try-catch 和所有的结果特别好。此外,一个先决条件是“patt”只有一个组,我并没有真正将其用于任何事情。任何输入?
def doesMatchRegEx(subj:String, patt:scala.util.matching.Regex) = {
try{
val Match = patt
val Match(x) = subj
true
} catch {
// we didnt match and therefore got an error
case e:MatchError => false
}
}
使用:
scala> doesMatchRegEx("foo",".*(foo).*".r)
res36: Boolean = true
scala> doesMatchRegEx("bar",".*(foo).*".r)
res37: Boolean = false
最佳答案
def doesMatchRegEx(subj:String, patt:scala.util.matching.Regex) = subj match {
case patt(_) => true
case _ => false
}
如您所见,这实际上使 'doesMatchRegEx 方法有点多余。
就像这样:
"foo".matches(".*(foo).*") // => true
"bar".matches(".*(foo).*") // => false
".*(foo).*".r.findFirstIn("foo").isDefined // => true
关于regex - Scala 中的惯用正则表达式匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3742436/