正则表达式中的括号似乎在 match/case 语句中不起作用。例如下面的代码
val pat1 = """ab""".r
val pat2 = """(a)(b)""".r
val pat3 = """((a)(b))""".r
val pat4 = """((a)b)""".r
val pat5 = """(ab)""".r
"ab" match {
case pat1(x) => println("1 " + x)
case pat2(x) => println("2 " + x)
case pat3(x) => println("3 " + x)
case pat4(x) => println("4 " + x)
case pat5(x) => println("5 " + x)
case _ => println("None of the above")
}
打印“5 ab”,但我希望任何模式都能匹配。我想使用“(...)?” 可选元素,但我不能。与此相关,我无法让 (?m) 工作。我的模式在匹配/案例表达式之外工作正常。有人可以向我解释一下 Scala 如何处理匹配/大小写表达式中的正则表达式吗?
我正在尝试在 Scala 中编写标记器