我有这个冗长的代码,可以在 Scala 中短路正则表达式提取/匹配。这会尝试将字符串与第一个 Regex 匹配,如果不匹配,它会尝试将字符串与第二个 Regex 匹配。
val regex1 : scala.util.matching.Regex = "^a(b)".r
val regex2 : scala.util.matching.Regex = "^c(d)".r
val s = ?
val extractedGroup1 : Option[String] = s match { case regex1(v) => Some(v) case _ => None }
val extractedGroup2 : Option[String] = s match { case regex2(v) => Some(v) case _ => None}
val extractedValue = extractedGroup1.orElse(extractedGroup2)
结果如下:
s == "ab" 然后提取值 == "b"
s == "cd" 然后提取值 == "c"
s == "gg" 然后提取值 == 无。
我的问题是我们如何将两个正则表达式与正则表达式或运算符组合成一个正则表达式,并且仍然使用 Scala 提取器。我试过这个,但总是没有情况。
val regex : scala.util.matching.Regex = "^a(b)$ | ^c(d)$".r
val extractedValue: s match { case regex(v) => Some(v) case _ => None }