regex - Scala 中的惯用正则表达式匹配

标签 regex scala

我正在努力使我的 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/

相关文章:

java - 如何清理文件,替换不需要的分隔符、运算符、字符串文字

Java 正则表达式 替换字符串时出现问题

Java 正则表达式 电话号码

java - Scala反射: how do I define a case class at runtime and then reference to it?

scala - 配置 SORM 的最佳实践

scala - 为什么流折叠操作会抛出内存不足异常?

javascript - 使用正则表达式从正文元素中选择单个文本字符

regex - 如何获取使用 bash 构建正则表达式的 TLD 列表?

json - 如何在 Play 框架 v2.0 中呈现 JSON 响应(来自 GIT 的最新版本)

Scala: Value::不是 Int 的成员