With standard sed, you will never see a newline in the text read from a file. This is because sed reads line by line, and there is therefore no newline at the end of the text of the current line in sed's pattern space. In other words, sed reads newline-delimited data, and the delimiters are not part of what a sed script sees.
Regular expressions can be anchored at the end of the line using $ (or at the beginning, using ^). Anchoring an expression at the start/end of a line forces it to match exactly there, and not just anywhere on the line.
If you want to replace anything matching the pattern [A-Za-z]* at the end of the line with something, then anchor the pattern like this:
[A-Za-z]*$
...will force it to match at the end of the line and nowhere else.
However, since [A-Za-z]*$ also matches nothing (for example, the empty string present at the end of every line), you need to force the matching of something, e.g. by specifying
[A-Za-z][A-Za-z]*$
or
[A-Za-z]\{1,\}$
So, your sed command line will thus be
$ sed 's/[A-Za-z]\{1,\}$/replace/' file.txt
I did not use the non-standard -E option here because it's not strictly needed. With it, you could have written
$ sed -E 's/[A-Za-z]+$/replace/' file.txt
It's a matter of taste.