Scala 在 match case 语句中使用带有或语法的正则表达式

标签 scala

出租车有人告诉我为什么这不起作用以及如何解决?

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/

相关文章:

scala - 在Scala中使用通用案例类

scala - SBT:我可以动态添加基于另一个库的依赖项吗?

scala - 烫伤时 "sbt update"时 Unresolved 依赖关系 : com. hadoop.gplcompression#hadoop-lzo;0.4.16

scala - 将 Scala 文件转换为 Dll

Scalatest:WAITING断言变为真

scala - 当我使用 Seq[T] 构造函数时,会创建什么具体的数据类型?

scala - 使用 Scala 在 Intellij 中显示带有类型的变量的工具提示

scala - KafkaIO 检查点 - 如何向 Kafka 提交偏移量

scala - Map.empty 和 None 是否占用相同的内存?

scala - 是否可以在 HDFS 上持久化 RDD?