list_of_words = ['a', 'boo', 'blah']
reg = re.compile('^(?=.*\\b(?:' + '|'.join(list_of_words) + ')\\b).*foo')
print(reg.pattern)
reg.findall('abcd foo blah')
Python re: if string has one word AND any one of a list of words?