次のコードの戻り値は、私が期待したものとはまったく異なります。
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 を使用するときにグループ キャプチャでグループに名前を付けて、完全に無視する必要があるのはなぜですか?