Я не уверен, что вы найдете один RE для этого, но вы можете попробовать два.Сначала вы сопоставляете свою строку с:
(unsubscribe|opt out)(.*)
Затем извлекаете группу 2 из этого совпадения.И прокачайте группу 2 через второй RE:
(https?:\/\/(www\.)?[-a-zA-Z0-9@:%._\+~#=]{2,256}\.[a-z]{2,6}\b([-a-zA-Z0-9@:%_\+.~#?&\/\/=]*))
, который вернет одно совпадение для каждой ссылки.Если я сделаю это с вашим примером, я получу:
Group 2 = blablablablabla unsubscribe blablabla http://link1.com blablabla http://link2.com
и затем на втором тесте:
Match 1, Group 1 = http://link1.com
Match 2, Group 1 = http://link2.com
Здесь есть потрясающий тестер регулярных выражений:
https://regex101.com/
То, что я добавил в закладки для быстрого тестирования таких сценариев.