8

ドキュメントからわかる限り、非キャプチャ グループは 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

これを「期待どおり」に機能させる方法はありますか?

4

2 に答える 2

4

構文が間違っているようです。(?:) である必要があります。

http://docs.oracle.com/javase/tutorial/essential/regex/groups.html

(? で始まるグループは、テキストをキャプチャしない純粋な非キャプチャ グループであり、グループの合計にはカウントされません。

于 2013-08-14T00:06:02.567 に答える