Before the replace is applied, the expression is evaluated and put into standard form. Standard form eliminates the superfluous 1.
1*a + 2*b + 3*c + 4*d + 5*e // FullForm
(* Plus[a, Times[2, b], Times[3, c], Times[4, d], Times[5, e]] *)
You could try suppressing evaluation like this:
Unevaluated[1*a + 2*b + 3*c + 4*d + 5*e] //. m_*n_ :> m
But I don't know if that fits into your workflow.