Вы запутались в необработанных строках. В необработанной строке Python обратная черта sh просто представляет обратную косую черту sh. Но затем механизм регулярных выражений интерпретирует их.
r'\\'
, так как регулярное выражение соответствует буквальному символу обратного хода sh.
r'\n'
, поскольку регулярное выражение соответствует новой строке.
r'\.'
(или r'[.]'
или '\\.'
без префикса r
) совпадает с литеральной точкой.
Таким образом, вы ошибаетесь - это регулярное выражение для сопоставления с точкой, а не для сопоставления с новой строкой.
Кроме того, если, конечно, вы хотите сопоставить несколько строк, скажите так:
r'per annum\.(\n.+)+?All taxes are assessed'
Ненасытный +?
говорит, что нужно сопоставить как можно меньше повторений, а не столько, сколько возможно.