If I understand you correctly, the important difference is the semi-colon: you want to replace
&, but not if it is followed by a semi-colon (i.e. you don't want to replace
&). The poor formatting in your post made it difficult to understand that.
The easy solution is to use a negative look-ahead, as already suggested in other posts, but I doubt that sed supports look-ahead assertions (it may depend which version).
Besides, even for a 200 MB file, this should not be a problem in Perl. Last time I compared the performance of Perl and sed, I did not find a really significant performance difference between them, but, again, this may depend on the implementation of the sed version you're using.