It seems your regex does not work in Python, the error it throws is look-behind requires fixed-width pattern.
Also, please note that re.MULTILINE flag in your regex is redundant as there is no ^ nor $ to re-define behavior for in the pattern.
Here is the code you can use:
import re
lst = ['Paris, 458 boulevard Saint-Germain', 'Marseille, 29 rue Camille Desmoulins', 'Marseille, 1 chemin des Aubagnens']
p = re.compile(r'.*(?:rue|boulevard|quai|chemin)')
print [p.sub('', x).strip() for x in lst]
IDEONE demo
Result:
['Saint-Germain', 'Camille Desmoulins', 'des Aubagnens']
The r'.*(?:rue|boulevard|quai|chemin)' regex matches
.* - 0 or more any character
(?:rue|boulevard|quai|chemin) - 1 of the alternatives delimited with |.
and then the matched text is removed with re.sub.
NOTE you can force whole word matching with \b word boundary so that chemin was matched and not chemins:
r'.*\b(?:rue|boulevard|quai|chemin)\b'