import re
import re
p = re.compile(r'([a-z]+)((?:,\s*[a-z]+)*)\s+(and|or)\s+([a-z]+)')
test_str = "white and blue ... white, and blue ... dark, green, gray and silver"
 
print([x.group(0) for x in re.finditer(p, test_str)])