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}))|(?:{1})".format(r"|".join(c_except), "|".join(c_out))
print(rx)
print(re.sub(rx, r"\1", phrase))
aW1wb3J0IHJlCnBocmFzZSA9ICc1IGhhbXBzaGlyZSByb2FkIGJyYWRmb3JkIG9uIGF2b24gYXZvbiBkaW5hcyBwb3d5cyBwb3d5cyBub3J0aCBzb21lcnNldCBoYW1wc2hpcmUgYXZvbicKY19leGNlcHQgPSBbciJvblxzKyIsciJkaW5hc1xzKyJdCmNfb3V0ID0gWyJhdm9uIiwgInBvd3lzIiwgInNvbWVyc2V0IiwiaGFtcHNoaXJlIl0KcnggPSByIihcYig/OnswfSkoPzp7MX0pKXwoPzp7MX0pIi5mb3JtYXQociJ8Ii5qb2luKGNfZXhjZXB0KSwgInwiLmpvaW4oY19vdXQpKQpwcmludChyeCkKcHJpbnQocmUuc3ViKHJ4LCByIlwxIiwgcGhyYXNlKSk=