Хотя предложение @ Ayman о re.VERBOSE
является лучшей идеей, если все, что вы хотите, это то, что вы показываете, просто сделайте:
patterns = re.compile(
r'<!--([^->]|(-+[^->])|(-?>))*-{2,}>'
r'\n+|\s{2}'
)
и автоматическая конкатенация Python смежных строковых литералов (во многом как C, btw) сделает все остальное; -).