import re

allowed_words_between = ["and", "with", "a", "very", "beautiful"]
start_signs = [r"\$", "\$\$"]
end_signs = ["Ferrari", "BMW", "Lamborghini", "ship"]
teststring = """
             I would like to be a $-millionaire with a Ferrari.
             I would like to be a $$-millionair with a Lamborghini.
             I would like to be a $$-millionair with a rotten Lamborghini.
             I would like to be a $$-millionair with a Lamborghini and a Ferrari.
             I would like to be a $-millionaire with a very, very beautiful ship!
             I would like to be a $-millionaire with a very, very beautiful but a bit dirty ship.
             I would like to be a $-millionaire with a dog, a cat, two children and a cowboy hat. That would be great.
             """
regexString = "(?:" + "|".join(start_signs) + ")\S*(?:(?:\s+(?:" + "|".join(allowed_words_between) + "),?)*\s+(?:" + "|".join(end_signs) + "))+"

for s in re.findall(regexString, teststring):
    print(s)
