以下代码的返回完全不是我所期望的:
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 时在组捕获中命名组,以便完全忽略它们?