import re
regex = re.compile(r"((?:[\w'-]+,\s+)+(?:[\w'-]+\s){0,2}[\w'-]+)(\s+(and|or)\s+[\w'-]+)", flags=re.IGNORECASE)
test_str = ("I love my parents, Bon Jovi and Lada Gaga.\n\n"
"We invited the strippers, Hitler and Stalin.\n\n"
"The problem is, you can never know if the user is making a list, or just typing a bunch of words and inserting commas.\n\n"
"I'm not sure whether to eat, shoot or leave!\n\n"
"List of words: can, can't and won't.\n\n"
"I will not use three-legged, blue or wooden stools.\n\n"
"Don't get this one or I'll be upset at you.\n\n"
"Put a command before this and I'll be sad.")
subst = "$1,$2"
result = regex.sub(subst, test_str)
if result:
print(result)
Please keep in mind that these code samples are automatically generated and are not guaranteed to work. If you find any syntax errors, feel free to submit a bug report. For a full regex reference for Python, please visit: https://docs.python.org/3/library/re.html