возвращения на следующий код не совсем то, что я ожидал:Сканирование групп с использованием регулярных выражений
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, чтобы они полностью игнорировались?
Yep, 'capture:: all_but_first' работает как шарм. Но почему это называется 'all_but_first'? – diogovk
Режим по умолчанию - ': all', который фиксирует весь матч плюс каждый захват (анонимный или именованный). ': all_but_first' исключает весь матч. –