Вы правы, вы не можете заменить изменяемый счетчик в Regex, поэтому вам придется рекурсивно менять вопросительные знаки по одному. @JustMichael ответ выглядит красиво. Если между вопросительными знаками может быть что-то другое, кроме пробелов, я бы сделал это следующим образом:
def number_question_marks(string), do: number_question_marks("", string, 1)
#helper takes previous and current string
#if nothing changes we end recursion
def number_question_marks(string, string, _), do: string
#if something changed we call recursively
def number_question_marks(_previous, string, counter) do
new = Regex.replace(~r/\?/, string, inspect(counter), global: false)
number_question_marks(string, new, counter + 1)
end
Это можно сделать - для этого вам не нужен изменяемый счетчик. У меня нет времени для разработки точного кода прямо сейчас, но это будет по линии Enum.map. –