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)
aW1wb3J0IHJlCgphbGxvd2VkX3dvcmRzX2JldHdlZW4gPSBbImFuZCIsICJ3aXRoIiwgImEiLCAidmVyeSIsICJiZWF1dGlmdWwiXQpzdGFydF9zaWducyA9IFtyIlwkIiwgIlwkXCQiXQplbmRfc2lnbnMgPSBbIkZlcnJhcmkiLCAiQk1XIiwgIkxhbWJvcmdoaW5pIiwgInNoaXAiXQp0ZXN0c3RyaW5nID0gIiIiCiAgICAgICAgICAgICBJIHdvdWxkIGxpa2UgdG8gYmUgYSAkLW1pbGxpb25haXJlIHdpdGggYSBGZXJyYXJpLgogICAgICAgICAgICAgSSB3b3VsZCBsaWtlIHRvIGJlIGEgJCQtbWlsbGlvbmFpciB3aXRoIGEgTGFtYm9yZ2hpbmkuCiAgICAgICAgICAgICBJIHdvdWxkIGxpa2UgdG8gYmUgYSAkJC1taWxsaW9uYWlyIHdpdGggYSByb3R0ZW4gTGFtYm9yZ2hpbmkuCiAgICAgICAgICAgICBJIHdvdWxkIGxpa2UgdG8gYmUgYSAkJC1taWxsaW9uYWlyIHdpdGggYSBMYW1ib3JnaGluaSBhbmQgYSBGZXJyYXJpLgogICAgICAgICAgICAgSSB3b3VsZCBsaWtlIHRvIGJlIGEgJC1taWxsaW9uYWlyZSB3aXRoIGEgdmVyeSwgdmVyeSBiZWF1dGlmdWwgc2hpcCEKICAgICAgICAgICAgIEkgd291bGQgbGlrZSB0byBiZSBhICQtbWlsbGlvbmFpcmUgd2l0aCBhIHZlcnksIHZlcnkgYmVhdXRpZnVsIGJ1dCBhIGJpdCBkaXJ0eSBzaGlwLgogICAgICAgICAgICAgSSB3b3VsZCBsaWtlIHRvIGJlIGEgJC1taWxsaW9uYWlyZSB3aXRoIGEgZG9nLCBhIGNhdCwgdHdvIGNoaWxkcmVuIGFuZCBhIGNvd2JveSBoYXQuIFRoYXQgd291bGQgYmUgZ3JlYXQuCiAgICAgICAgICAgICAiIiIKcmVnZXhTdHJpbmcgPSAiKD86IiArICJ8Ii5qb2luKHN0YXJ0X3NpZ25zKSArICIpXFMqKD86KD86XHMrKD86IiArICJ8Ii5qb2luKGFsbG93ZWRfd29yZHNfYmV0d2VlbikgKyAiKSw/KSpccysoPzoiICsgInwiLmpvaW4oZW5kX3NpZ25zKSArICIpKSsiCgpmb3IgcyBpbiByZS5maW5kYWxsKHJlZ2V4U3RyaW5nLCB0ZXN0c3RyaW5nKToKICAgIHByaW50KHMpCg==