出租车有人告诉我为什么这不起作用以及如何解决?
val aorb = "(a|b)".r
aorb.findFirstIn("with a ")
res103: Option[String] = Some(a)
"with a " match { case aorb() => "have a or b" case _ => "None"}
res102: String = None
我希望匹配语句返回“有 a 或 b”
实际问题是针对输入尝试在更复杂的正则表达式上进行一系列匹配,并在第一个成功模式上返回一个值。
最佳答案
模式匹配的“ anchor 定”正则表达式匹配整个输入:
val aorb = ".*(a|b).*".r
"with a " match {
case aorb(_) => "have a or b"
case _ => "None"
}
// res0: String = have a or b
如果您的正则表达式中有捕获组,您还应该使用或明确忽略结果:注意
_
在 aorb(_)
.
关于Scala 在 match case 语句中使用带有或语法的正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17572225/