How to check whether a String fully matches a Regex in Scala?
regex, scala
Solution
Answering my own question I'll use the "pimp my library pattern"
object RegexUtils {
implicit class RichRegex(val underlying: Regex) extends AnyVal {
def matches(s: String) = underlying.pattern.matcher(s).matches
}
}
and use it like this
import RegexUtils._
val Digit = """\d""".r
if (Digit matches "5") println("match")
else println("no match")
unless someone comes up with a better (standard) solution.
Notes
I didn't pimp `String` to limit the scope of potential side effects.
`unapplySeq` does not read very well in that context.
Problem
Assume I have a Regex pattern I want to match many Strings to. ``` val Digit = """\d""".r ``` I just want to check whether a given String fully matches the Regex. What is a good and idiomatic way to do this in Scala? I know that I can pattern match on Regexes, but this is syntactically not very pleasing in this case, because I have no groups to extract: ``` scala> "5" match { case Digit() => true case _ => false } res4: Boolean = true ``` Or I could fall back to the underlying Java pattern: ``` scala> Digit.pattern.matcher("5").matches res6: Boolean = true ``` which is not elegant, either. Is there a better solution?