4

次のコードの戻り値は、私が期待したものとはまったく異なります。

iex(12)> Regex.scan(%r/(?<groupname>a)b(c)/g,"abcdabcd", capture: :groups)
[["a"], ["a"]]

2 つのグループがありますが、名前の付いたグループのみが結果に表示されます。また、グループ名は完全に無視されます。

named_capture を使用すると、次のようになります。

iex(14)> Regex.named_captures(%r/(?<groupname>a)b(c)/g,"abcdabcd", capture: :groups)
[groupname: "a"]

まあ、私はの結果だと思います

Regex.scan(%r/(?<groupname>a)b(c)/g,"abcdabcd", capture: :groups)

どちらかであるべき

[["a", "c"], ["a", "c"]]    #=> including "anonymous groups"

また

[[groupname: "a"], [groupname: "a"]] #=> include group name in the results

私の質問は、Regex.scan を使用するときにグループ キャプチャでグループに名前を付けて、完全に無視する必要があるのはなぜですか?

4

1 に答える 1