gpt4 book ai didi

regex - 如何检查一个字符串是否完全匹配 Scala 中的正则表达式?

转载 作者:行者123 更新时间:2023-12-03 05:13:26 24 4
gpt4 key购买 nike

假设我有一个正则表达式模式,我想要匹配许多字符串。

val Digit = """\d""".r

我只想检查给定的字符串是否与正则表达式完全匹配。在 Scala 中执行此操作的良好且惯用的方法是什么?

我知道我可以在正则表达式上进行模式匹配,但在这种情况下,这在语法上不太令人满意,因为我没有要提取的组:

scala> "5" match { case Digit() => true case _ => false }
res4: Boolean = true

或者我可以退回到底层的 Java 模式:

scala> Digit.pattern.matcher("5").matches
res6: Boolean = true

这也不优雅。

有更好的解决方案吗?

最佳答案

回答我自己的问题时,我将使用“拉皮条我的图书馆模式”

object RegexUtils {
implicit class RichRegex(val underlying: Regex) extends AnyVal {
def matches(s: String) = underlying.pattern.matcher(s).matches
}
}

像这样使用它

import RegexUtils._
val Digit = """\d""".r
if (Digit matches "5") println("match")
else println("no match")

除非有人想出更好的(标准)解决方案。

注释

  • 我没有通过拉皮条 String 来限制潜在副作用的范围。

  • unapplySeq 在这种情况下读起来不太好。

关于regex - 如何检查一个字符串是否完全匹配 Scala 中的正则表达式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3021813/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com