import re
phrase = '5 hampshire road bradford on avon avon dinas powys powys north somerset hampshire avon'
c_except = [r"on\s",r"dinas\s"]
c_out = ["avon", "powys", "somerset","hampshire"]
rx = r"(?<!\b{0})({1})".format(r")(?<!\b".join(c_except), "|".join(c_out))
print(re.sub(rx, "", phrase))
aW1wb3J0IHJlCnBocmFzZSA9ICc1IGhhbXBzaGlyZSByb2FkIGJyYWRmb3JkIG9uIGF2b24gYXZvbiBkaW5hcyBwb3d5cyBwb3d5cyBub3J0aCBzb21lcnNldCBoYW1wc2hpcmUgYXZvbicKY19leGNlcHQgPSBbciJvblxzIixyImRpbmFzXHMiXQpjX291dCA9IFsiYXZvbiIsICJwb3d5cyIsICJzb21lcnNldCIsImhhbXBzaGlyZSJdCnJ4ID0gciIoPzwhXGJ7MH0pKHsxfSkiLmZvcm1hdChyIikoPzwhXGIiLmpvaW4oY19leGNlcHQpLCAifCIuam9pbihjX291dCkpCnByaW50KHJlLnN1YihyeCwgIiIsIHBocmFzZSkp