This is probably not the best way to deal with this problem, but ...
You can use the underscore character _as an indicator that there should be some kind of character in this place, which actually makes it a character counter in such a situation. Just a quick example:
SELECT REPLACE('This is &[^amp;] just a test.','&[^amp;]','&')
WHERE 'This is &[^amp;] just a test.' LIKE '%&___;%'
This will not return a value because the line in the sentence WHEREdoes not include &, followed by three characters _ _ _, and then a semicolon.
SELECT REPLACE('This is &[^amp;] just a test.','&[^amp;]','&')
WHERE 'This is &[^amp;] just a test.' LIKE '%&_____;%'
This will return the value because the condition LIKEis encountered using a line in a sentence WHERE: &_ _ _ _ _;(distance added for clarity)
Maybe you could use this to your advantage?