fork(2) download
  1. import re
  2. phrase = '5 hampshire road bradford on avon avon dinas powys powys north somerset hampshire avon'
  3. c_except = [r"on\s+",r"dinas\s+"]
  4. c_out = ["avon", "powys", "somerset","hampshire"]
  5. rx = r"(\b(?:{0})(?:{1}))|(?:{1})".format(r"|".join(c_except), "|".join(c_out))
  6. print(rx)
  7. print(re.sub(rx, r"\1", phrase))
Success #stdin #stdout 0.01s 28384KB
stdin
Standard input is empty
stdout
(\b(?:on\s+|dinas\s+)(?:avon|powys|somerset|hampshire))|(?:avon|powys|somerset|hampshire)
5  road bradford on avon  dinas powys  north