据我从文档中可以看出,非捕获组由 (:? ) 定义,就像在 Java 中一样。(我相信它是同一个底层库)。
但是,这似乎不起作用:
var R = "a(:?b)c".r
R.findFirstMatchIn("abc").get.group(1)
返回“b”(当它应该为空时)。我怀疑这通常不是问题,但是在进行模式匹配时,这意味着我现在不能这样做:
"abc" match {case R => println("ok");case _ => println("not ok")}
> not ok
我要做:
"abc" match {case R(x) => println("ok");case _ => println("not ok")}
> ok
有没有办法让这项工作“按预期”?