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時,爲什麼必須在組捕獲中命名組,以便它們完全被忽略?
是的,'捕獲:: all_but_first'就像一個魅力。但爲什麼它被稱爲'all_but_first'? – diogovk
默認模式是':all',它捕獲整個匹配加上每個捕獲(匿名或命名)。 ':all_but_first'不包括整個比賽。 –