Хотя вам следует избегать синтаксического анализа HTML с помощью регулярных выражений, но поскольку ваш случай кажется простым не вложенным регистром тега, вы можете захватить все данные между тегами, используя следующее регулярное выражение, и захватить данные в группе 1,
(?s)<address>(.*?)<\/address>
Поскольку ваши данные представляются в несколько строк, вам понадобится (? S) флаг в регулярном выражении, который позволяет точке соответствовать символам новой строки.
Вот демоверсия
И, в вашем собственном регулярном выражении, вам нужно было немного исправить и использовать флаг (? S), как я описал выше, чтобы он работал. Ваша версия регулярного выражения может быть исправлена и использована следующим образом:
(?s)(?<=>)(.*?)(?=<\/address)
(экранирование /
с \
)
OR
(?s)(?<=>)(.*?)(?=<\Q/\Eaddress)
(не нужно бежать / если вы поместите его между \ Q и \ E)
Демо для вашего регулярного выражения