假设我有一个正则表达式模式我想匹配许多字符串 .
val Digit = """\d""".r
我只想检查给定的String是否与Regex完全匹配 . 在Scala中执行此操作的好方法是什么?
我知道我可以在Regexes上进行模式匹配,但在这种情况下,这在语法上并不是很令人满意,因为我没有要提取的组:
scala> "5" match { case Digit() => true case _ => false }
res4: Boolean = true
或者我可以回到基础Java模式:
scala> Digit.pattern.matcher("5").matches
res6: Boolean = true
这也不优雅 .
有更好的解决方案吗?
6 回答
回答我自己的问题,我将使用“pimp my library pattern”
并像这样使用它
除非有人提出更好的(标准)解决方案 .
Notes
我没有皮条客
String
来限制潜在副作用的范围 .unapplySeq
在该上下文中读得不太好 .我不太了解Scala,但看起来你可以做到:
参考文献
对于完整比赛,您可以使用unapplySeq . 此方法尝试匹配目标(整个匹配)并返回匹配 .
答案在正则表达式中:
然后使用现有方法之一 .
使用标准Scala库和预编译的正则表达式模式和模式匹配(这是scala最先进的技术):
更多内容:http://www.scala-lang.org/api/2.12.1/scala/util/matching/index.html