view.replace() is not a "Find and replace" function, it just a replace a given subset of the view by a given string.
IMHO, what we need is a way to call the replace Command with our arguments.
I think you can do what you want with:
View.find_all(pattern, <flags>, <format>, <extractions>) [Region]
Returns all (non-overlapping) regions matching the regex pattern. The optional flags parameter may be sublime.LITERAL, sublime.IGNORECASE, or the two ORed together. If a format string is given, then all matches will be formatted with the formatted string and placed into the extractions list.
This method returns the position of your regexp (as View.find), but in addition you can give it a format and an empty list in the extractions argument.
After that you only have to loop through the lists and do the job (not tested):
lstpos = view.find_all(pattern, <flags>, <format>, lstrepl)
for pos, repl in zip(lstpos, lstrepl):
view.replace(edit, pos, repl)